#include "iostream"
using namespace std;
class A
{
public:
A(){cout<<"创建A"<<endl;}
virtual void func(){cout<<"类A"<<endl;}
virtual ~A(){cout<<"析构A"<<endl<<endl;}
};
class B:public A
{
public:
B(){cout<<"创建B"<<endl;}
void func(){cout<<"类B"<<endl;}
~B(){cout<<"析构B"<<endl<<endl;}
};
void main()
{
A*pa=new A;//new与构造函数一起工作,当使用new来创建一个对象时,也会默认地调用构造函数
pa->func();
delete pa; //delete与析构函数一起工作,当使用delete删除一个对象或者指针时,也会默认地调用析构函数。如果该析构函数是虚函数,那么这个调用的过程将是动态的
A *pb=new B;
pb->func();
delete pb;
system("pause");
using namespace std;
class A
{
public:
A(){cout<<"创建A"<<endl;}
virtual void func(){cout<<"类A"<<endl;}
virtual ~A(){cout<<"析构A"<<endl<<endl;}
};
class B:public A
{
public:
B(){cout<<"创建B"<<endl;}
void func(){cout<<"类B"<<endl;}
~B(){cout<<"析构B"<<endl<<endl;}
};
void main()
{
A*pa=new A;//new与构造函数一起工作,当使用new来创建一个对象时,也会默认地调用构造函数
pa->func();
delete pa; //delete与析构函数一起工作,当使用delete删除一个对象或者指针时,也会默认地调用析构函数。如果该析构函数是虚函数,那么这个调用的过程将是动态的
A *pb=new B;
pb->func();
delete pb;
system("pause");
}
如果基类中定义了虚函数,析构函数也应说明为虚函数,这样对内存的回收更准确些