为了账号安全,请及时绑定邮箱和手机立即绑定

关于编译器NRV优化的问题

关于编译器NRV优化的问题

江户川乱折腾 2019-04-16 16:58:29
话说如果一个class没有提供copyconstructor,就不会实施NRV优化,这是为什么,因为编译器需要的话,可以合成一个copyconstructor啊求大神解答,谢谢。
查看完整描述

2 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

题目的这句话应该是从深度探索C++对象模型中看来的吧,其实NRV优化和有没有copyconstructor并没有直接的联系。
“早期的cfront需要一个开关来决定是否应该对代码实行NRV优化,这就是是否有客户(程序员)显式提供的拷贝构造函数:如果客户没有显示提供拷贝构造函数,那么cfront认为客户对默认的逐位拷贝语义很满意,由于逐位拷贝本身就是很高效的,没必要再对其实施NRV优化;但如果客户显式提供了拷贝构造函数,这说明客户由于某些原因(例如需要深拷贝等)摆脱了高效的逐位拷贝语义,其拷贝动作开销将增大,所以将应对其实施NRV优化,其结果就是去掉并不必要的拷贝函数调用。”
参看上面的那段话,当然我也是从其他地方摘过来的,由于Lippman写这本书的时候比较早,并且他是cfront的早起作者之一,所以就想当然的把这句话当做准则写进书里面了。
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 405 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号