| 查看: 1487 | 回复: 14 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
微尘、梦想木虫 (知名作家)
|
[求助]
复制构造函数问题
|
||
|
书上说:复制构造函数在以下3种情况下会被调用: 1、用类的对象去初始化该类的另一个对象时; 2、函数的形参是类的对象时; 3、函数的返回值是类的对象时。 程序: 问题:该程序在第三种情况时并没有调用复制构造函数,其执行结果为: 调用复制构造函数 10 40 调用复制构造函数 100 800 3 5 不知道为什么,谢谢各位指点!!! |
» 猜你喜欢
一志愿中科大材料与化工,353分还有调剂学校吗
已经有13人回复
085600材料与化工调剂
已经有6人回复
320求调剂
已经有6人回复
期刊推荐
已经有5人回复
有没有接收比较快的sci期刊呀,最好在一个月之内的,研三孩子求毕业
已经有7人回复
又一批高校组建人工智能学院 师资行吗 不是骗人吗
已经有4人回复
297,工科调剂?河南农业大学本科
已经有15人回复
337求调剂
已经有3人回复
申博/考博
已经有5人回复
申博
已经有3人回复

【答案】应助回帖
★ ★
余泽成(金币+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













回复此楼
50