LINUX.ORG.RU

История изменений

Исправление rumgot, (текущая версия) :

Тебе нужно почитать какую-нибудь книгу по основам C++. Потому что у тебя сейчас каша в голове. В C++ приведение из указателя на объект родительского класса в указатель на объект производного класса нужно использовать ТОЛЬКО ТОГДА, КОГДА В ПАМЯТИ ПО ЭТОМУ УКАЗАТЕЛЮ НАХОДИТСЯ ОБЪЕКТ ЭТОГО ПРОИЗВОДНОГО КЛАССА ЛИБО ЕГО ПОТОМКА! ИНАЧЕ (если по этому указателю в памяти расположен объект родительского класса или объект вообще не из данной иерархии наследования (если используется reinterpret_cast)) ЭТО НЕОПРЕДЕЛЕННОЕ ПОВЕДЕНИЕ И ТАК ДЕЛАТЬ НЕЛЬЗЯ (и кстати dynamic_cast при этом вернет nullptr в случае указателя и сгенерирует исключение в случае ссылки).

Исправление rumgot, :

Тебе нужно почитать какую-нибудь книгу по основам C++. Потому что у тебя сейчас каша в голове. В C++ приведение из указателя на объект ролительского класса в указатель на объект производного класса нужно использовать ТОЛЬКО ТОГДА, КОГДА В ПАМЯТИ ПО ЭТОМУ УКАЗАТЕЛЮ НАХОДИТСЯ ОБЪЕКТ ЭТОГО ПРОИЗВОДНОГО КЛАССА ЛИБО ЕГО ПОТОМКА! ИНАЧЕ (если по этому указателю в памяти расположен объект родительского класса или объект вообще не из данной иерархии наследования (если используется reinterpret_cast)) ЭТО НЕОПРЕДЕЛЕННОЕ ПОВЕДЕНИЕ И ТАК ДЕЛАТЬ НЕЛЬЗЯ (и кстати dynamic_cast при этом вернет nullptr в случае указателя и сгенерирует исключение в случае ссылки).

Исходная версия rumgot, :

Тебе нужно почитать какую-нибудь книгу по основам C++. Потому что у тебя сейчас каша в голове. В C++ приведение из указателя на объект ролительского класса в указатель на объект производного класса нужно использовать ТОЛЬКО ТОГДА, КОГДА В ПАМЯТИ ПО ЭТОМУ УКАЗАТЕЛЮ НАХОДИТСЯ ОБЪЕКТ ЭТОГО ПРОИЗВОДНОГО КЛАССА ЛИБО ЕГО ПОТОМКА! ИНАЧЕ (если по этому указателю в памяти расположен объект родительского класса или объект вообще не из данной иерархии наследования (если используется reinterpret_cast)) ЭТО НЕОПРЕДЕЛЕННОЕ ПОВЕДЕНИЕ И ТАК ДЕЛАТЬ НЕЛЬЗЯ.