====== Přetypování dynamic_cast ======
Proměnnou typu ukazatel na základní třídu nemůžeme přiřadit do proměnné typu ukazatel na odvozenou třídu.
Basic * b = new Basic;
Component * v = b;
Je zřejmé, že objekt typu //Basic// nemá proměnnou //z// a metodu //move//, a proto nelze přiřadit //v = b;//
Pokud v proměnné typu //Basic*// byl uložen objekt typu //Component//, potom by bylo možné objekt uložit do proměné typu //Component*//. \\
Ovšem překladač nám stejně přiřazení nedovolí.
Z hlediska překladače je přířazení ukazatele na //Basic// do ukazatele na //Component// potenciálně nebezpečné.
Item * c = new Component;
Basic * u = c;
Component * v = u; /* překladač ohlásí chybu */
Konstrukce **dynamic_cast** umožňuje přetypování ukazatele na základní třídu na ukazatel na odvozenou třídu
Basic * u;
Component * v = dynamic_cast < Component * > (u);
Pokud parametr v kulatých závorkách za běhu programu nebude skutečně typu uvedeného v < > závorkách, bude výsledkem **nullptr**
Příklad použití dynamic_cast uvidíme v následujícím přikladu s Open Inventorem