为什么返回值优化需要显示的提供一个子copy constructor,,,但是又不调用它呢?

   

返回值的主要目的就是为了消除由于调用copy   constructor而导致的开销。

如果你没有显示提供copy   constructor,那么编译器就会为你自动合成一个,但是编译器很可能会认为自己合成的这个copy   constructor是trivial的(也就是几乎什么都不做),也就是说调用这个自己合成的copy   constructor并没有什么额外的性能开销,所以此时编译器不会执行返回值优化。但是如果你显示提供了一个copy   construtor,那么编译器就认为这个copy   constructor肯定会做一些实际的事情(可能实际上你也没做什么),进而会导致一定的开销,所以它会打开返回值优化的功能,将临时对象优化掉。  

所以,你可以把“自己定义copy   constructor”当成打开编译器返回值优化功能的“开关”。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值