dynamic_cast的问题
dynamic_cast是被用于安全的沿着类的继承关系向下进行类型转换.
看这个例子:
class Class
{
public:
Class(){
cout << "10" << endl;
}
virtual ~Class(){
cout << "11" << endl;
}
};
class Class_A : public Class
{
public:
Class_A(){
cout << "20" << endl;
}
virtual ~Class_A(){
cout << "21" << endl;
}
};
class Class_B : public Class_A{
public:
Class_B(){
cout << "30" << endl;
}
virtual ~Class_B(){
cout << "31" << endl;
}
};
但为什么这样的转换也会成功:
Class_B *pb = new Class_B;
Class_A *pa = dynamic_cast<Class_A *>(pb);
这样不是向上转换吗?