std :: bad_cast:https://en.cppreference.com/w/cpp/types/bad_cast
当dynamic_cast到引用类型的运行时检查失败(例如,由于类型与继承无关)时,将引发此类型的异常
因此,如果类型不是通过继承关联的,那么它将引发错误,那么下面的引号如何成立?
https://stackoverflow.com/a/332086/462608
您不仅可以向下投射,还可以使用它-您可以侧向投射,甚至向上投射另一个链。
这句话是什么意思?请举例。
答案 0 :(得分:3)
例如,侧面路投:
class Base1 { virtual ~Base1() = default; };
class Base2 { virtual ~Base2() = default; };
class Derived: public Base1, public Base2 {};
int main() {
Base1* p1 = new Derived;
Base2* p2 = dynamic_cast<Base2*>(p1);
}
类型Base1
和Base2
彼此无关,但是您可以在指针之间进行强制转换,因为Derived
继承自两者。
我不确定原始应答程序是什么意思““铸造另一个链条””,但是我想这意味着您将拥有一个Base1*
指针并将其转换为{ {1}}父级。