C++细节合成析构函数问题(synthesized destructor)

开门见山,前提知识点

析构函数体自身并不直接销毁成员,是在函数体之后隐含的析构阶段中被销毁的

 

《c++primer》第五版13章中提及的“合成析构函数”,原文中 

当1个类未定义自己的析构函数时,编译器会为它定义一个合成析构函数(synthesized destructor)。类似拷贝构造函数和拷贝赋值函数运算符,对于某些类,合成析构函数被用来阻止该类型的对象被销毁。

而csdn板块查询时,绝大部分博主重点上认为这个属于一个新名词,掺杂一些析构函数的功能便发表,我还是无法明晰何为合成析构函数。

看书中大体描述,得到下面的一些 

就算你自己定义了析构函数,系统始终会为我们合成一个析构函数,析构函数自身并不直接销毁成员是非常重要的,在整个对象销毁中,析构函数体是作为成员销毁步骤之外的另一部分而进行的。

这与其他书籍中(和既往知识)有所冲突,

部分书籍指出合成析构函数是只有在特定情况下得到

我在谷歌上查询进行翻译发现这中的synthesized destructor 是指的是destruction part(本部分由系统完成,与程序员无关)还有系统自身的一些调度和我们写的函数体相结合,我们写的析构函数依然是仅有的析构函数,析构函数是不能被重载的(没有参数),所谓的合成析构函数实则在《c++primer》中指的 是系统对程序员写的析构函数完善,没写则生成默认的析构函数(合成析构),你写了,类似我以前文章中写的new和delete文章,析构函数只是冰山露在水面上的一角,还有许多工作完成,便形成合成析构函数。

 

后来在知乎上看到《C++primer》的审校 陈梓瀚先生(轮子哥)对类似问题的解释,如释重负。

图片截取自知乎,如有侵权,立即删除。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值