Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Непонятки с приведением типов. |
Автор: m9yt 18.6.2010, 15:53 | ||
Привет всем. Есть следующий код:
Почему-то пример1 работает, т.е. функция get возвращает указатель, а 2 пример, по-моему, релизует то же самое, но с указателем p2 проблема-функция get не работает. Помогите разобраться! |
Автор: ИванМ 18.6.2010, 16:00 |
m9yt, dymamic_cast может преобразовать только те объекты, которые принадлежат классу переданного в качестве параметра объекта или являются базовыми классами этого объекта. В обратную сторону не работает. |
Автор: m9yt 18.6.2010, 16:07 | ||
Тогда в чём смысл этого кода?
|
Автор: ИванМ 18.6.2010, 16:09 |
Это небезопасное приведение типа. Можно что угодно привести к чему угодно. |
Автор: m9yt 18.6.2010, 16:18 | ||
ну ведь после этого "p2=(meaning*)(&wrd);" он указывает на объект класса-предок А такое возможно? |
Автор: bsa 19.6.2010, 11:12 |
dynimic_cast нужен для преобразования указателя/ссылки на предка в указатель/ссылку на потомка в том случае, когда не известно точно, на какого именно потомка указывает указатель/ссылка. Работает ТОЛЬКО для классов с виртуальными методами. static_cast может использоваться тогда, когда достоверно известно, что указатель/ссылка указывает именно на нужного потомка. |
Автор: mes 19.6.2010, 13:03 |
(не для новичков) добавлю для полноты : также для cross_cast`инга при множественном наследовании.. |