析构函数

来源:互联网 发布:淘宝微淘需要收费吗 编辑:程序博客网 时间:2024/06/01 15:38
在类中使用指针时,需要使用new分配它自己的空间。如:
Private: int* m_pAge;
Public:Cperson(){m_pAge =new int(100);}
new 或者 malloc后需要手动删除所使用空间,由此引入析构函数.
析构函数:回收对象在堆区分配的空间,类中有new就会有析构函数.对象生命周期结束,会自动调用析构函数.
析构:对象生命周期结束时,回收空间.其中对象包括:
部对象:生命周期是当前作用域结束.
全局对象:生命周期是程序结束.
指针对象: CPerson* p=new CPerson;//new 堆区的生命周期,遇到delete时结束
临时对象:CPerson(); //生命周期就是当前这一行
当函数返回对象时,会使用临时对象,如下所示:
CPerson QQ() { CPerson ps;   Return ps;}
Int main(){
CPerson ps1;
ps1=QQ();
}
分析:在QQ()函数中,由于ps为局部对象,当return时会自动调用析构函数,将ps删除掉,为了防止该情况发生,所以引入了临时对象。
上述代码的输出结果为:构造函数、构造函数、析构函数、析构函数、析构函数。




注意:new和delete创建、删除对象时会触发构造函数和析构函数。
但malloc时需要自己手动添加构造和析构函数,它自己不会自动调用。
1 0
原创粉丝点击