#include<iostream>
using namespace std;
class A
{
public:
A()
{
cout<<"A"<<endl;
}
~A()
{
cout<<"~A"<<endl;
}
};
class B
{
public:
B()
{
cout<<"B"<<endl;
}
~B()
{
cout<<"~B"<<endl;
}
};
int main()
{
A* p=new A;
cout<<"~A()的显示调用:";
p->~A();
delete p;
//
cout<<"--------------------------------------------"<<endl;
B b;
cout<<"~B()的显示调用:";
b.~B();
//
cout<<"--------------------------------------------"<<endl;
return 0;
}
执行结果为:
测试说明,delete p;语句会自动调用一个析构函数,同时用B b;这种方式定义的对象,函数执行完毕后自动调用~B销毁空间,但是通过A* p=new A;这种方式定义的则不行,用户必须自己手动销毁空间,现在把delete p;注释掉,则执行结果如下:------说明指针指向的空间必须手动清除。