NRV优化为什么需要有copy constructor才能实施?

gularess 2002-08-27 09:48:12
Inside The C++ model里讲到添加一个copy constructor能触发NRV优化,但NRV大概是这样:
X bar(){
X xx;
//...
return xx;
}优化成
void bar(X &_result) {
_result.X::X();
//...直接处理_result
return;
}
优化的代码不需要copy constructor啊?请知道的解答,不胜感激!
...全文
81 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sclzmbie 2002-09-17
  • 打赏
  • 举报
回复
我也找遍了CSDN,发现下面的帖子说的有道理

http://www.csdn.net/expert/topic/573/573849.xml?temp=.5684931

wangran 2002-08-27
  • 打赏
  • 举报
回复
你先到这里看看有没有帮助:
http://www.csdn.net/expert/topic/745/745067.xml?temp=7.180423E-02
yousp 2002-08-27
  • 打赏
  • 举报
回复
为什么需要拷贝构造函数?这里我觉得根本就不需要。
_result是用来返回值的,

编译器调用优化代码的时候使用的是一个已经在堆中建立好的局部变量

这里传进来的实际上是一个指针, _result.X::X()应该是为该指针分配空间,
你不释放这个空间,就根本不需要做一个Copy Constructor.

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧