指针类型的dynamic_cast 是用于基类指针向派生类指针的安全转换。那对于多层派生类的指针,是否也能进行转换?还是只是能进行仅仅只有一层关系的又基类向派生类指针的转换?
如:
class A
{
// ......
};
class B : public A
{
// ......
};
class C : public B
{
// ......
};
int main()
{
A *pA = new A;
B *pB = dynamic_cast<B *>(pA); // OK
C *pC = dynamic_cast<C *>(pB); // OK
C *pC = dynamic_cast<C *>(pA); // ?????????}
//全是单继承,并不存在多继承的情况
如:
class A
{
// ......
};
class B : public A
{
// ......
};
class C : public B
{
// ......
};
int main()
{
A *pA = new A;
B *pB = dynamic_cast<B *>(pA); // OK
C *pC = dynamic_cast<C *>(pB); // OK
C *pC = dynamic_cast<C *>(pA); // ?????????}
//全是单继承,并不存在多继承的情况