作为基类的类一定要定义虚析构函数(否则delete时只能调用基类的析构函数)
纯虚函数不代表不能出现函数体,只是说明这个类是一个抽象类,不能出现对象实体;而作为基类的抽象类一定要定义纯虚析构函数的函数体,因为它会在派生类的对象删除时被链接调用。。。不定义的话必然出现link error 构造函数一定不能是虚函数
在构造函数中调用虚函数,实际是按普通函数调用的,没有多态性;应尽量避免
#include
using namespace std; class base{ public: base(void){} //~base(); virtual ~base()=0; }; base::~base(){
cout<<"base delete..."< class derived:public base{
public: ~derived(){ cout<<"derived delete..."< }; int main(){
base *bp; bp=new derived; delete bp; }
写一段备忘……
|
|