История изменений
Исправление DarkEld3r, (текущая версия) :
Что значит «может»?
Это и значит.
struct Base { virtual ~Base() {} };
struct A : Base { virtual ~A() {} };
struct B : Base { virtual ~B() {} };
void main() {
Base* p = new B();
auto* pa = dynamic_cast<A*>(p); // pa == nullptr
auto& ra = dynamic_cast<A&>(*p); // exception
}
Исправление DarkEld3r, :
Что значит «может»?
Это и значит.
struct Base { virtual ~Base() {} };
struct A : Base { virtual ~A() {} };
struct B : Base { virtual ~B() {} };
void main() {
Base* p = new B();
auto* pa = dynamic_cast<A*>(p); // a == nullptr
auto& ra = dynamic_cast<A&>(*p); // exception
}
Исходная версия DarkEld3r, :
Что значит «может»?
Это и значит.
struct Base { virtual ~A() {} };
struct A : Base { virtual ~A() {} };
struct B : Base { virtual ~A() {} };
void main() {
Base* p = new B();
auto* pa = dynamic_cast<A*>(p); // a == nullptr
auto& ra = dynamic_cast<A&>(*p); // exception
}