LINUX.ORG.RU

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

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

И второй вопрос: какого хрена тогда мне парили мозг, что касты не нужны в обсуждении, на которое я дал ссылку в топике:

Не читал про что там тебе парили, но касты действительно не нужны когда ты делаешь приведение типа к одному из базовых типов (upcast). При обратном действии, о котором ты спрашиваешь в этом топике (downcast), явные касты как раз обязательны. Тут весь вопрос только в том, какой каст применить. Быстрее - static_cast, но, как я говорил, ты должен точно знать, что указатель/ссылка указывает на объект конкретного типа. Ошибешься - в рантайме может произойти все, что угодно. Если же ты не можешь знать, на что тычет указатель - придется обмазываться dynamic_cast, но он работает медленнее и, если не ошибаюсь, требует наличия RTTI.

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

И второй вопрос: какого хрена тогда мне парили мозг, что касты не нужны в обсуждении, на которое я дал ссылку в топике:

Не читал про что там тебе парили, но касты действительно не нужны когда ты делаешь приведение типа к одному из базовых типов (upcast). При образтном действии, о котором ты спрашиваешь в этом топике (downcast), явные касты как раз обязательны. Тут весь вопрос только в том, какой каст применить. Быстрее - static_cast, но, как я говорил, ты должен точно знать, что указатель/ссылка указывает на объект конкретного типа. Ошибешься - в рантайме может произойти все, что угодно. Если же ты не можешь знать, на что тычет указатель - придется обмазываться dynamic_cast, но он работает медленнее и, если не ошибаюсь, требует наличия RTTI.