Sdílet prostřednictvím


Obsazení

Jazyk C++ zajišťuje, že pokud je třída odvozená ze základní třídy obsahující virtuální funkce, ukazatele typu základní třídy slouží k volání implementace virtuálních funkcí s bydlištěm v odvozené třídě objektu.Třída obsahující virtuální funkce se někdy nazývá "polymorfní třída".

Protože odvozené třídy zcela obsahuje definice základních tříd ze kterého je odvozen, je bezpečné odevzdaných ukazatel hierarchie třídy kterékoli z těchto základních tříd.Ukazatel vzhledem k základní třídy, může být bezpečné odevzdaných ukazatele dolů v hierarchii.Je bezpečné Pokud se odkazuje na objekt je ve skutečnosti typu odvozen ze základní třídy.V tomto případě skutečný objekt označen jako "celý objekt." Přejděte na určitých podřízených "objektů" dokončení objektu se říká ukazatel na základní třídy.Zvažte například hierarchie třídy ukazuje následující obrázek.

Hierarchie třídy

Hierarchie třídy – grafika

Objekt typu C nelze detekují, jak ukazuje následující obrázek.

Třída C B určitých podřízených objektů a určitých podřízených objektů

S podobjektu B a z podobjektu třídy c

Dané instanci třídy C, je B určitých podřízených objektů a A určitých podřízených objektů.Instance C, včetně A a B subobjects, je "celý objekt."

Pomocí informací o typu run-time je možné zkontrolovat, zda ukazatel ve skutečnosti odkazuje na celý objekt a může bezpečně odevzdaných přejděte na jiný objekt v hierarchii.Dynamic_cast operátor lze provádět tyto typy nádech.Provádí také nezbytné provést operaci bezpečné spuštění kontroly.

Pro převod typů nonpolymorphic lze použít static_cast operátor (Toto téma vysvětluje rozdíl mezi statické a dynamické obsazení převody a je vhodné použít každý).

Tato část zahrnuje následující témata:

Viz také

Referenční dokumentace

Výrazy (C++)