社区
C++ 语言
帖子详情
函数返回一个类时的问题
jronald
2004-06-15 04:16:56
<inside c++ object model>说
X bar(){
X xx;
return xx;
}
会转化为
void bar(X &result){
...
return;
}
还说
X xx=bar();
会被转化为
X xx;
bar(xx);
这好理解,但是没说像下面这样,会转化为什么
bar();
哪位DX知道啊?
...全文
171
17
打赏
收藏
函数返回一个类时的问题
说 X bar(){ X xx; return xx; } 会转化为 void bar(X &result){ ... return; } 还说 X xx=bar(); 会被转化为 X xx; bar(xx); 这好理解,但是没说像下面这样,会转化为什么 bar(); 哪位DX知道啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
一路奔跑
2004-06-20
打赏
举报
回复
偶也没发现看这本书走过什么弯路啊~~~
oldjackyone
2004-06-19
打赏
举报
回复
看那本书,只能对编译器中的C++有一个大概的了解,但并不能依赖于此书,毕竟每一个编译器的编译的具体过程不一样。
但可以去看编译原理。^_^
Zark
2004-06-19
打赏
举报
回复
有这样的优化啊,实在是孤陋寡闻,第一次看到.
不过对于
X bar(){
X xx;
return xx;
}
X xx=bar();
是肯定要调用一次拷贝构造函数的.
而
void bar(X &result){
...
return;
}
X xx;
bar(xx);
是肯定不用调用拷贝构造函数.
如果这样优化了,是不是就丢了拷贝构造函数那一环了呢?
而
doolin
2004-06-19
打赏
举报
回复
这样确实是一种优化,原因上大的类对象在作为参数或返回值时的开销很大.优化成引用后就减少了这种开销,但 bar()这各样的函数是不需要优化的,所以它不会被转化
oldjackyone
2004-06-16
打赏
举报
回复
偶不知道,没看过.~~
海阔天空的创业与创作
2004-06-16
打赏
举报
回复
一直觉得《More Effective C++》挺好的
楼主也看看
qwertasdfg123
2004-06-16
打赏
举报
回复
《inside the c++ object model》确实有点难。
fibbery
2004-06-16
打赏
举报
回复
学海无涯苦作舟啊!
BluntBlade
2004-06-16
打赏
举报
回复
我把《Inside The C++ Object Model》看了三遍了,没发觉走了什么弯路啊?
星星还是那个星星,月亮还是那个月亮……
dot99
2004-06-16
打赏
举报
回复
会转化为
X tempX; //临时对象, 最后丢掉了~
bar(tempX);
在constructor和destructor里面加入输出说明, 就可以看到这个临时变量的存在~
Tdxdy
2004-06-16
打赏
举报
回复
qwertasdfg123(Nullah) :
《inside the c++ object model》:个人感觉,不是难吧.对编译器具体作些什么,有个大概了解,对写代码很有好处;
ra3
2004-06-15
打赏
举报
回复
void bar(X &result);
X x = bar();
哈哈! 这样也行啊!
jronald
2004-06-15
打赏
举报
回复
知道编译器做什么能提高代码质量,估计Effetive C++之类的书看起来也会有点感觉
标题是有问题
merlinran
2004-06-15
打赏
举报
回复
还有,题目就错误。函数是无法返回一个类的,它只能返回一个对象。
merlinran
2004-06-15
打赏
举报
回复
看来又是一个中毒者。
看这本书时,千万不要把书中使用的技术当成语言本身。比如这里的RVO(返回值最优化),编译器可以做,也可以不做,那是它的自由(尽管不做RVO的编译器可能不太受欢迎)。一般来说,编译器干了些什么,做些什么优化,与我们写程序关系不太大的。
我建议你立即放下本书,买本《The C++ Programming Language》或者《C++ Primer》来看,在这个阶段,《Inside The C++ Object Model》可能会让你走很多弯路。
这是我曾经有过的教训。
Kusk
2004-06-15
打赏
举报
回复
会转化到“没有”?哈哈~`` ` ` `
我猜如果没有什么副作用,会被编译器优化掉;
否则将产生一个匿名对象,函数结束后则被自动删除。
jronald
2004-06-15
打赏
举报
回复
UPUP
Excel wps 小白偷懒系列(电子表格制作 vlookup
函数
的使用方法)
通过本套教程,您将学会 快速绘制表格,并完成打印输出,动态表格在工作中的妙用,窗格的冻结,制作动态考勤表,学会vlookup
函数
的操作,掌握vlookup的常范的错误,会嵌套vlookup
函数
返回
多列的值,了解数据透视表
JavaScript之Date对象详解(属性和方法)
Date 对象方法 getDate() 从 Date 对象
返回
一个
月中的某一天 (1 ~ 31)。 getDay() 从 Date 对象
返回
一周中的某一天 (0 ~ 6)。 getFullYear() 从 Date 对象以四位数字
返回
年份。 getHours()
返回
Date 对象的小时 (0 ...
JavaScript中Location对象详解
port:
返回
一个
URL服务器使用的端口号 protocol:
返回
一个
URL协议 search:
返回
一个
URL的查询部分 方法如下: Location对象-方法-assign() Location对象-方法-reload() Location对象-方法-replace()
Go语言官方文档学习笔记(第二季)
第二季内容包括:安装VSCode、在VSCode中编写第
一个
Go程序、包、导入与导出名字、
函数
、多值
返回
、
返回
命名、变量及其初始化。具体内容包括以下十个部分。 1-Editor- VSCode 2-Hello,World 3-Packages 4-...
掰开揉碎『看漫画学Python』下
复制文本文件 12.5 读写二进制文件 12.6 动动手 —— 复制二进制文件 12.1 练一练 第13章 图形用户界面 13.1 Python中的图形用户界面开发库 13.2 安装wxPython178 13.3 第
一个
wxPython程序180 13.4 自定义窗口类182 ...
C++ 语言
64,683
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章