C++ 关于多态性的安全问题

2025-04-07 02:24:41
推荐回答(3个)
回答1:

这种用法会出错,也不安全,派生类的指针和引用可以转换为基类的指针和引用,但是转换之后的基类指针或者引用只能使用基类的成员函数,但是基类的指针不能转换成派生类的指针,因为基类没有派生类的新加入的成员。使用编译器会报错!

回答2:

如果 A *a = new B 的话应该是安全的
因为指针指向的地址空间本来就是对象B的。

回答3:

提问感觉就有点怪,是B继承了A,不是A继承了B.
因为继承、虚构、抽象、重组等造成了多样性。
你是否想这么问:void function(A *a);调用时:B*b;function(b);