原因:基类对象的指针操作派生类对象时,防止析构函数只调用基类的,而不调用派生类的
下面详细说明:
//基类 class A{ public : A(){ cout<<"A构造函数"<<endl; } ~A(){cout<<"A被销毁了"<<endl;} void Do(){ cout<<"A要做点什么"<<endl; } }; //派生类 class B :public A{ public : B(){ cout<<"B构造函数"<<endl;} ~B(){ cout<<"B被销毁了"<<endl;} void Do(){ cout<<"B要做点什么"<<endl;} };
(1)派生类 指针=new 派生类;
B *p =new B; 那么就会执行基类构造函数,派生类构造函数
p->Do(); 通过派生类指针可以调用派生类的成员函数
delete p; 先调用派生类析构函数,在调用基类构造函数
#include<iostream>