| 查看: 1402 | 回复: 14 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
微尘、梦想木虫 (知名作家)
|
[求助]
复制构造函数问题
|
||
|
书上说:复制构造函数在以下3种情况下会被调用: 1、用类的对象去初始化该类的另一个对象时; 2、函数的形参是类的对象时; 3、函数的返回值是类的对象时。 程序: 问题:该程序在第三种情况时并没有调用复制构造函数,其执行结果为: 调用复制构造函数 10 40 调用复制构造函数 100 800 3 5 不知道为什么,谢谢各位指点!!! |
» 猜你喜欢
交叉科学部支持青年基金,对三无青椒是个机会吗?
已经有3人回复
国家级人才课题组招收2026年入学博士
已经有5人回复
Fe3O4@SiO2合成
已经有6人回复
青年基金C终止
已经有4人回复
青椒八年已不青,大家都被折磨成啥样了?
已经有7人回复
为什么nbs上溴 没有产物点出现呢
已经有10人回复
救命帖
已经有11人回复
招博士
已经有5人回复
26申博求博导推荐-遥感图像处理方向
已经有4人回复
限项规定
已经有7人回复

【答案】应助回帖
★ ★
余泽成(金币+2): 鼓励交流! 2011-06-08 16:14:19
余泽成(金币+2): 鼓励交流! 2011-06-08 16:14:19
呃,我好像没有回答楼主的问题呃,再补上。![]() 正常情况下,返回一个对象需要调用一次复制构造函数将返回对象保存到一个安全的地方,然后删除栈对象,等到函数返回之后,再对保存好的对象操作。因此,这里必须有一次复制构造。 但是楼主困惑的这个问题并不是由复制构造函数引起的,而是由f()和g()这样的短函数引起的。C++有一个inline的特性,它阻止任何浪费时间的函数调用,inline关键字对编译器只能是建议,这无法直接控制。从结果来看,这里没有复制操作,实际上就是没有函数调用,换句话说,就是内联展开了。 |

11楼2011-06-08 12:40:49
libralibra
至尊木虫 (著名写手)
骠骑将军
- 程序强帖: 40
- 应助: 817 (博后)
- 金币: 12914.1
- 红花: 64
- 帖子: 2238
- 在线: 287.3小时
- 虫号: 696514
- 注册: 2009-02-05
- 专业: 计算机软件

2楼2011-06-07 21:36:08
微尘、梦想
木虫 (知名作家)
- 程序强帖: 6
- 应助: 2 (幼儿园)
- 贵宾: 0.353
- 金币: 4757.9
- 散金: 3089
- 红花: 31
- 沙发: 247
- 帖子: 8788
- 在线: 1125小时
- 虫号: 1203290
- 注册: 2011-02-14
- 专业: 制造系统与自动化

3楼2011-06-07 21:38:31
libralibra
至尊木虫 (著名写手)
骠骑将军
- 程序强帖: 40
- 应助: 817 (博后)
- 金币: 12914.1
- 红花: 64
- 帖子: 2238
- 在线: 287.3小时
- 虫号: 696514
- 注册: 2009-02-05
- 专业: 计算机软件

4楼2011-06-07 21:43:57













回复此楼