C/C++析构函数
如果C++类的设计析构函数,使我们显示调用时,可以析构掉对象..如何C++类的设计析构函数,使我们显示调用时,可以析构掉对象.....
如果C++类的设计析构函数,使我们显示调用时,可以析构掉对象.. 如何C++类的设计析构函数,使我们显示调用时,可以析构掉对象..
展开
1个回答
展开全部
析构函数的作用是对类对象进行内存回收(即声明了该内存空间可以被其他程序使用了!),显示调用析构函数只会执行你设计的析构函数的功能(也就是上诉括号里的,声明被析构成员的内存空间可以被其他程序所使用了。),但是不会真正意义上析构掉对象,要析构掉对象,只有当且仅当对象的生命周期结束时,由系统操作系统回收对象的内存!这同其他的变量一样,当生命周期结束时,才会被回收内存空间!
另外,为什么显示调用析构函数后,能然可以访问被析构了的类成员呢?(假如你的类中有个使用malloc分配空间的成员,然后析构函数中使用free掉他。)因为,free的作用是声明该内存空间可以被其他程序所用,而不是隔断变量地址至物理内存的映射(程序虚拟内存空间至物理内存空间的映射),即这种映射关系并不会因为free的影响而断开,所以free后能然访问那片内存空间,但是实际上,那片内存空间已经不是你的程序所私有的了,而是被系统标记为未分配出去的空间。
所以综上所述,调用了析构函数后,却能然可以访问被析构了的成员这个假象造成了我们认为显示调用析构函数没用!
以上的观点属于个人结论,而且现在没有机器做实验,不知道说的是对是错,请楼主自行斟酌。
另外,为什么显示调用析构函数后,能然可以访问被析构了的类成员呢?(假如你的类中有个使用malloc分配空间的成员,然后析构函数中使用free掉他。)因为,free的作用是声明该内存空间可以被其他程序所用,而不是隔断变量地址至物理内存的映射(程序虚拟内存空间至物理内存空间的映射),即这种映射关系并不会因为free的影响而断开,所以free后能然访问那片内存空间,但是实际上,那片内存空间已经不是你的程序所私有的了,而是被系统标记为未分配出去的空间。
所以综上所述,调用了析构函数后,却能然可以访问被析构了的成员这个假象造成了我们认为显示调用析构函数没用!
以上的观点属于个人结论,而且现在没有机器做实验,不知道说的是对是错,请楼主自行斟酌。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
东莞大凡
2024-08-07 广告
2024-08-07 广告
在东莞市大凡光学科技有限公司,我们利用Halcon软件处理机器视觉项目时,会用到自定义标定板以满足特定需求。Halcon支持用户根据实际应用场景自定义标定板形状与标记点。这不仅可以灵活应对不同工作环境,还能提高标定精度。通过调整圆点数量、间...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询