为什么返回值优化需要显示的提供一个子copy constructor,,,但是又不调用它呢?
来源:互联网 发布:java从入门到精通4pdf 编辑:程序博客网 时间:2024/05/22 20:28
返回值的主要目的就是为了消除由于调用copy constructor而导致的开销。
如果你没有显示提供copy constructor,那么编译器就会为你自动合成一个,但是编译器很可能会认为自己合成的这个copy constructor是trivial的(也就是几乎什么都不做),也就是说调用这个自己合成的copy constructor并没有什么额外的性能开销,所以此时编译器不会执行返回值优化。但是如果你显示提供了一个copy construtor,那么编译器就认为这个copy constructor肯定会做一些实际的事情(可能实际上你也没做什么),进而会导致一定的开销,所以它会打开返回值优化的功能,将临时对象优化掉。
所以,你可以把“自己定义copy constructor”当成打开编译器返回值优化功能的“开关”。
- 为什么返回值优化需要显示的提供一个子copy constructor,,,但是又不调用它呢?
- 调用了bindService()之后,程序执行了Service里的onBind(),但是为什么不执行ServiceConnection对象接口onServiceConnected()呢?
- 关于copy constructor的编译器优化
- 为什么CSDN的正文有时显示.有时又是显示摘要呢
- 输入一个数,把它作为一个串,判断其中是否包含长度>=2的相同子串,如 果包含,返回1,不包含,返回0
- 为什么CheckBox只能控制Panel控件的显示,不能控制它的隐藏呢?
- 为什么C++不直接提供一个产生随机数的函数?
- 为什么freetextbox不显示按钮呢
- 一个类的字段存取器,分别在什么场合需要用 assign、copy、retain呢?
- swing:为什么一个类里调用另一个类的panel不显示
- linux中,一个目录的权限是777,普通用户为什么删除不了它呢?
- 我们期待自己成为一个优秀的软件模型设计者,但是,要怎样做,又从哪里开始呢?
- (转贴)我们期待自己成为一个优秀的软件模型设计者,但是,要怎样做,又从哪里开始呢?
- 我们期待自己成为一个优秀的软件模型设计者,但是,要怎样做,又从哪里开始呢?
- copy constructor的实现
- 使用库函数也有系统调用的开销,为什么不直接使用系统调用呢?
- 为什么不能用返回值类型来判断方法是否重载呢?
- 为什么数组可以不加“&”取它的地址,而普通变量必须要加“& ”才可以呢?
- C#中的base
- tomcat 服务器 编码
- ^^
- 第一次写这个东西,不知道怎么写
- ruby有感!
- 为什么返回值优化需要显示的提供一个子copy constructor,,,但是又不调用它呢?
- DB2中有关日期和时间的函数,及应用
- DB2常用标量函数
- 台湾微软MVP董大伟来京讲授“ASP.NET AJAX 与 Silverlight 的完美结合”
- DB2中的限制之三字符串的限制
- 程序员的 7-11-23
- IBM DB2 日常维护汇总
- 交友
- 解决 Google Spreadsheet 未解决的问题