基类指针强制转换成派生类的问题

2024-12-12 09:36:38
推荐回答(2个)
回答1:

既然转换了那就是指向派生类了,调用函数不涉及到变量还可以,如果涉及到变量就是不安全的了,
比较常规的做法是派生类指针转换成基类的
调用init函数是派生类继承自基类的函数

回答2:

虽然编译没有错,但是这种写法是很有问题的,会有一些未定义行为的。
a指针还是指向基类A的具体对象,但是a指针的类型已经是B类的类型了,调用的init()函数式B继承下来的。为什么A类的具体对象能够调用Init2函数呢,因为当(B*)a->Init2()时,编译器看到是属于B类型的指针调用,能够调用Init2,但是调用Init2时是有很大隐患的。