c++ 一道题,求解释为什么错

[复制链接]
查看11 | 回复4 | 2013-6-17 23:38:50 | 显示全部楼层 |阅读模式
这本书很好你看看上面有讲 陈树振 陈翼男 著C++释难解惑pdf 44页书太好了。现在调用函数 fun()。语句1里的变量 val 是一个 auto 型变量,它存储在栈里的 fun()函数的数据现场里,当函数 fun()执行完毕后,它就要从栈里弹出而失去生命,它不可能被带到主调函数里去,那么,系统是怎么做的呢?第一步:在先前预留出来的 sizof(int)个字节的那一小块存储里建立一个临时的、匿名的变量,我们不妨称这个变量为 temp,此时 temp 要被返值表达式 val 的值初始化。我们设想一下,假设函数的返值是对象,那么此时务必会调用构造函数初始化 temp 的;第二步:函数 fun()执行结束,auto 型变量 val 被...
回复

使用道具 举报

千问 | 2013-6-17 23:38:50 | 显示全部楼层
原题目TestClass(const TestClass &x)提示了对象整份复制都会调用这个构造函数。调用userCode(TestClass b)传参数调用了一次构造函数(因为你这是值传递,给被调用函数userCode传递了一份拷贝),TestClass c(b)第二次调用构造函数,return c也是值传递,第三次调用构造函数,同样是返回一份c的拷...
回复

使用道具 举报

千问 | 2013-6-17 23:38:50 | 显示全部楼层
d=usercode(a);中, 实参a传递到形参bTestClass c(b);中, b传递到xreturn c; 中 ,c传递到主函数的d一共三次...
回复

使用道具 举报

千问 | 2013-6-17 23:38:50 | 显示全部楼层
单步跟踪看看,什么解释都比不上跟着执行步骤一步一步的看...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行