Přetypování
Jazyk C++ udává, že je-li třída odvozena ze základní třídy obsahující virtuální funkce, lze ukazatel na typ této základní třídy použít k volání implementací virtuálních funkcí umístěných v objektu odvozené třídy. Třída obsahující virtuální funkce je někdy označována jako „polymorfní třída“.
Jelikož odvozená třída obsahuje všechny definice všech základních tříd, z nichž byla odvozena, lze ukazatel přetypovat na libovolnou z těchto tříd vyskytujících se výše v jejich hierarchii. Je-li dán ukazatel na základní třídu, může být bezpečné přetypovat ukazatel na třídu umístěnou v hierarchii níže. Přetypování je bezpečné, pokud objekt, na který ukazatel ukazuje, je ve skutečnosti typem odvozeným ze základní třídy. V tomto případě je skutečný objekt "úplným objektem". Ukazatel na základní třídu je označen tak, aby odkazoval na "podobjekt" kompletního objektu. Vezměte v úvahu například hierarchii tříd znázorněnou na následujícím obrázku.
Hierarchie tříd
Objekt typu C
lze vizualizovat tak, jak ukazuje následující obrázek.
Třída C s dílčími objekty B a A
Je-li dána instance třídy C
, existuje podobjekt B
a podobjekt A
. Instance třídy C
, včetně podobjektů A
a B
, je „kompletním objektem“.
Pomocí informací o typu modulu runtime lze zkontrolovat, zda ukazatel skutečně ukazuje na kompletní objekt a lze jej bezpečně přetypovat tak, aby ukazoval na jiný objekt ve své hierarchii. Operátor dynamic_cast lze použít k provedení těchto typů přetypování. Operátor provádí za běhu také kontroly potřebné k zajištění bezpečnosti operace.
Pro převod nepolymorfních typů můžete použít operátor static_cast (toto téma vysvětluje rozdíl mezi statickými a dynamickými převody přetypování a kdy je vhodné použít každý z nich).
Tato část se zabývá následujícími tématy:
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro