社区
C语言
帖子详情
关于Inside the C++ Object Model一书中的一个问题
leasun
2003-02-18 05:46:45
在书中第67页上说,因为test class没有copy constructor,所以编译器不能执行NRV优化。不过我看在NRV优化中不需要copy constructor。谁能告诉我为什么?
...全文
155
9
打赏
收藏
关于Inside the C++ Object Model一书中的一个问题
在书中第67页上说,因为test class没有copy constructor,所以编译器不能执行NRV优化。不过我看在NRV优化中不需要copy constructor。谁能告诉我为什么?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
晨曦2003
2003-02-22
打赏
举报
回复
楼上的,你多少分了?
love_snoopy
2003-02-22
打赏
举报
回复
NRV的作用就是减少,甚至消除对copy constructor的调用,以换取效率。
哎,什么时候涨星星呢?!?!?!
chinajiji
2003-02-22
打赏
举报
回复
如果你没有显式地写一个copy constructor,并且编译器为你自动生成的copy constructor 是 trivial的,那么,实际上编译器就不会为你真正生成一个copy
constructor,结果编译器可能在准备用NRV优化你的代码时,由于没有一个可以利用的copy constructor而不打开NRV优化.
但,如果你显式地写了一个copy constructor,那么,编译器在进行NRV优化时就可以找到一个copy constructor了,所以,这时就可以执行NRV优化了.
有的编译器则不需要这样做,即没有显式地定义一个copy constructor 也可以实施NRV优化.总之,这与编译器的实现有关.
J2eeLearner
2003-02-22
打赏
举报
回复
不需要copy constructor?
//书已经看了很久了! 书上说得很清楚 ,NRV优化需要你显式的提供拷贝构造函数(尽管他的功能和编译器默认的拷贝构造函数类似!)。
书上还把编译器生成的拷贝构造函数也分为两类! 你注意一下他们之间的区别!
建议 你直接看最后一章,其余的可以不怎么看!
leasun
2003-02-22
打赏
举报
回复
up
ckacka
2003-02-18
打赏
举报
回复
怎么提交了两次?ft~~~
ckacka
2003-02-18
打赏
举报
回复
对象模型上的东西都是C++编译器的规范,不过不一定你的编译器有这样的功能,至少vc没有!
毕竟作者是cfront的作者!
ckacka
2003-02-18
打赏
举报
回复
对象模型上的东西都是C++编译器的规范,不过不一定你的编译器有这样的功能,至少vc没有!
毕竟作者是cfront的作者!
chinajiji
2003-02-18
打赏
举报
回复
有的编译器需要显式地定义一个copy constructor 来激活NRV优化.有的编译器则不需要这样做,即没有显式地定义一个copy constructor 也可以实施NRV优化.总之,这与编译器的实现有关.
Ins
ide
C++
Object
Model
中
文版 英文版
下载
Ins
ide
C++
Object
Model
中
文版 英文版 作者:(美)Stanley B. Lippman 著,侯捷 译 出版社:华
中
科技大学出版社 出版日期:2001-5-1 内容提要本书重点:探索“对象导向程序所支持的
C++
对象模型”下的程序行为。对于“对象导向性质之基础实现技术”以及“各种性质背后的隐含利益交换”提供
一个
清楚的认识。检验由程序变形
深度探索
C++
对象模型:
Ins
ide
the
C++
Object
Model
书
中
首先介绍了
C++
对象模型的基本概念,包括对象的内存布局、类的成员变量和成员函数的存储方式等。
C++
对象模型的核心是如何在内存
中
表示对象,以及如何通过指针和引用来操作这些对象。
C++
对象模型是理解
C++
编程语言如何在内存
中
表示和管理对象的基础。它涉及对象的内存布局、类的成员变量和成员函数的存储方式,以及如何通过指针和引用来操作这些对象。普通成员函数是与类的实例相关联的函数。它们可以访问类的非静态数据成员和其他成员函数。value = v;
C++
对象模型,很多东西来自《
Ins
ide
the
C++
Object
Model
》
一书
一个
C++
程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节。对于使用V
C++
的程序员来说,还应该了解一些V
C++
对于
C++
的诠释。
Ins
ide
the
C++
Object
Model
虽然是一本好书,然而,书的篇幅多一些,又和具体的V
C++
关系小一些。因此,从篇幅和内容来看,译者认为本文是深入理解
C++
对象模型比较好的
一个
出发点。 这篇文章以前看到时就觉得很好,旧文重读,感觉理
Ins
ide
The
C++
Object
Model
期待
C++
的ABI转型(cast)其实是一种编译器指令,大部分情况下它并不改变
一个
指针所含的真正地址,它只影响“被指出之内存的大小和其内容”的解释方式;那么,什么情况下转型会导致指针的值发生变化呢?多重继承时转向不同基类?Global
Object
s的内存保证会在程序激活的时候被清0;Local
Object
s配置于栈
中
,heap
object
s配置于自由空间
中
,都不一定会被清0,它们的内容将是上
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章