析构函数的显示调用测试

来源:互联网 发布:条码软件有哪些 编辑:程序博客网 时间:2024/05/22 06:08
#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;注释掉,则执行结果如下:------说明指针指向的空间必须手动清除。

原创粉丝点击