这种用法会出错,也不安全,派生类的指针和引用可以转换为基类的指针和引用,但是转换之后的基类指针或者引用只能使用基类的成员函数,但是基类的指针不能转换成派生类的指针,因为基类没有派生类的新加入的成员。使用编译器会报错!
如果 A *a = new B 的话应该是安全的
因为指针指向的地址空间本来就是对象B的。
提问感觉就有点怪,是B继承了A,不是A继承了B.
因为继承、虚构、抽象、重组等造成了多样性。
你是否想这么问:void function(A *a);调用时:B*b;function(b);