最近在工作中,出现了严重的代码错误,对象的基类和子类的继承,代码大致如下:
class A { }; class B : public A { } void main() { A* a;(用于子类对象来进行赋值)= new 子类; //错误代码如下 B* b = (B*) a; b.方法; }
//在这个过程中,主要有两点错误:1,在a进行转换到B并没有对a进行类型判断,a不为空,则b肯定不为空 2.对b调用自己方法。如果b是非想虚函数,不会崩溃,但是调用自己的虚构函数,则崩溃。自己要多看看c++对象模型和c++ primer书,对对象模型能够了解清楚