首先经过自己手敲得打的答案是对,错,错
#include <iostream>
using namespace std;
class A{
public:
A(){};
virtual ~A(){};
};
class B:public A{
public:
B(){};
virtual ~B(){};
};
class C:public B{
public:
C(){};
virtual ~C(){};
};
class D:public B,public A{
public:
D(){};
virtual ~D(){};
};
int main() {
//括号a
// A *pa= new C;
// B *pb=dynamic_cast<B*>(pa);
// cout<<"转换完成"<<endl;
//括号b
// B *pb=new B ;
// C *pc= dynamic_cast<C*>(pb);
// cout<<"转换完成"<<endl;
//括号c
A *pa=new D;
B *pb= dynamic_cast<B*>(pa);
}
(a)
(b)
转换之后,pc为空,表示没有转换成功。B是C的基类。
(c)
模棱两可的转换。
来源:CSDN
作者:ThorKing01
链接:https://blog.csdn.net/ThorKing01/article/details/103705284