Re[2]: Разные способы приведения типов - где можно почитать?
От: Batiskaf Израиль http://www.mult.ru/
Дата: 28.01.04 09:15
Оценка: 21 (3)
Здравствуйте, Vamp, Вы писали:


V>2. dynamic_cast.

V>С-каст не способен реализовать его функциональность. Отличается от статик каста проверкой типов во время выполнения, следовательно, его использование сопряжено с накладными расходами и требует включения RTTI (Run-time type information), однако безопасно. Существует в двух формах — указательной и ссылочной. Пример:

V>
V>class A {};
V>class B : public A {};
V>...
V>A a;
V>B b;

V>A* pa=&b;
V>A& ra=b;

V>B* pb=dynamic_cast<B*>(pa); //указательная форма
V>B& rb=dynamic_cast<B&>(ra); //ссылочная форма
V>


V>Формы различаются поведением. в случае если во время выполнения программы проверка типов показала, что преобразование некорректно (например, указателя не указывает на объект запрашиваемого типа). Указательная форма возвращает нулевой указатель, а ссылочная генерирует исключени bad_cast.


Если быть до конца точным, то:

class A 
{
public:
virtual ~A(){}
};
class B : public A 
{
public:
virtual ~B() {}
};
Will I live tomorrow? Well I just can't say
But I know for sure — I don't live today.
Jimi Hendrix.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.