析构函数

在类中使用指针时,需要使用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时需要自己手动添加构造和析构函数,它自己不会自动调用。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值