社区
C语言
帖子详情
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
打赏
收藏
NRV优化为什么需要有copy constructor才能实施?
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啊?请知道的解答,不胜感激!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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.
第二章构造函数语义学--关于
NRV
优化
和
copy
constructor
《深度探索C++对象模型》P67最下面说道: 这个程序的第一个版本不能
实施
NRV
优化
,因为test class 缺少一个
copy
constructor
. 看了一下程序,这个
NRV
优化
和
copy
constructor
木有关系的说啊,所以为什么没有
copy
constructor
就不能进行
NRV
优化
了呢。 搜了一下,结果很坑爹,就是 侯捷也不知道,Lippman也没有给出答案,而且...
拷贝构造函数与
NRV
优化
《深度探索C++对象模型》第二章67页有: 这个程序的第一个版本不能
实施
NRV
优化
,因为test class 缺少一个
copy
constructor
. 也就是缺少拷贝构造函数所以不能
NRV
优化
。
NRV
优化
和拷贝构造函数是有关系的,只有定义了拷贝构造函数才会开启
NRV
优化
,但现代编译器
NRV
优化
的开启一般都与拷贝构造函数没有关系, 早期的 cfront
需要
一个开关来决定是否应该对代码实行...
C++进阶系列:拷贝构造函数与
NRV
优化
《深度探索C++对象模型》第二章67页有: 这个程序的第一个版本不能
实施
NRV
优化
,因为test class 缺少一个
copy
constructor
. 也就是缺少拷贝构造函数所以不能
NRV
优化
。
NRV
优化
和拷贝构造函数是有关系的,只有定义了拷贝构造函数才会开启
NRV
优化
,但现代编译器
NRV
优化
的开启一般都与拷贝构造函数没有关系, 早期的 cfront
需要
一个开关来决定是否应该对代码实行...
NRV
这里举一个
NRV
优化
的例子。 一般有
copy
constructor
会
NRV
优化
。现在没有这个规定,根据编译器各有不同。没有
copy
constructor
使用bitwise
copy
效率也很高效。
GCC编译器下
NRV
优化
关于
NRV
优化
的相关测试以及思考
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章