#include<iostream>
using namespace std;
class Base
{
private:
int age;
public:
Base(int _age=1):age(_age){}
void show(){cout<<"base"<<endl;}
~Base(){cout<<"~base"<<endl;}
};
class BasePlus:public Base
{
private:
int height;
public:
BasePlus(int _age=1,int _height=1):Base(_age),height(_height){}
~BasePlus(){cout<<"~baseplus"<<endl;}
};
int main()
{
//运行时注释另一个代码段
//#1
Base* p=new BasePlus;
p->show();
delete p;
/*输出:
base
~base
*/
//#2
Base* pp;
BasePlus one;
pp=&one;
pp->show();
/*output:
base
~baseplus
~base
*/
/*
如果基类西沟函数不是虚的,则将只调用对应于指针类型的析构函数。如果没有virtual放在
基类析构函数前面,即使基类的指针指向派生类对象,析构函数只会调用基类的析构函数。
因此一个类如果作为基类,它的析构函数最好!最好!最好!是virtual!virtual!virtual!
*/
return 0;
}
虚析构函数
最新推荐文章于 2021-09-13 21:07:31 发布