Rzutowanie
Język C++ zapewnia, że jeśli klasa pochodzi od klasy bazowej zawierających funkcje wirtualnych, wskaźnik ten typ bazowy klasy może służyć do wywołania implementacji funkcji wirtualnych znajdujących się w obiekcie w klasie pochodnej.Klasa zawierająca funkcje wirtualnych jest czasami nazywane "polimorficzne klas".
Ponieważ w klasie pochodnej całkowicie zawiera definicje klas bazowych z którego pochodzi, bezpiecznie oddanych wskaźnik w górę hierarchii klas do dowolnego z tych klas podstawowych.Biorąc pod uwagę wskaźnik do klasy podstawowej, może być bezpiecznie oddanych wskaźnik w dół hierarchii.Jest bezpieczne, jeśli obiekt jest wskazywana jest faktycznie typu pochodną klasy podstawowej.W tym przypadku rzeczywistego obiektu jest określane jako "kompletny obiekt." Wskaźnik do klasy podstawowej jest nazywany wskaż "podobiektów" kompletnego obiektu.Rozważmy na przykład hierarchia klas pokazano na poniższym rysunku.
Hierarchia klas
Obiekt typu C można wywołać, jak pokazano na poniższym rysunku.
Klasa c podobiektów b i podobiektów.
Biorąc pod uwagę instancji klasy C, jest B podobiektów i A podobiektów.Wystąpienie C, w tym A i B subobjects, jest "kompletny obiekt."
Korzystając z informacji typu run-time, możliwe jest sprawdzenie, czy wskaźnik faktycznie punkty kompletnego obiektu i może być bezpiecznie oddanych wskaż inny obiekt w swojej hierarchii.Dynamic_cast można używać operatora, aby te rodzaje poświaty.Wykonuje także konieczność dokonania bezpiecznego funkcjonowania wyboru run-time.
Konwersja typów nonpolymorphic, można użyć static_cast operatora (w tym temacie wyjaśniono różnicy między konwersje odlewania statycznych i dynamicznych i kiedy należy używać każdego).
W tej sekcji omówiono następujące tematy: