uop:dynamic
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
uop/dynamic.txt · Last modified: 2020/11/13 12:09 by 127.0.0.1