c++程序中复制构造函数调用了几次?

#include<iostream>usingnamespacestd;classTest{public:Test(){}Test(constTest&t){cout<<... #include <iostream>
  using namespace std;
  class Test{
  public:
  Test(){ }
  Test(const Test &t) {cout<<1;}
  };
  Test fun(Test &u) {Test t=u; return t;}
  int main(){Test x,y; x=fun(y); return 0;}

这个输出结果是11,但是书上答案说的不清楚,说x=fun(y),Test t=u和return t都调用了复制构造函数,这是什么意思?
另外,Test fun(Test &u) {Test t=u; return t;}这种【类名 函数名(类名 &)】形式属于的是什么函数?调用时候是怎么个过程呢??
展开
 我来答
ebeaza
2012-09-26
知道答主
回答量:1
采纳率:0%
帮助的人:1564
展开全部
书上说的是对的,你是用debug运行的吧?

Test t=u,这里调用了一次
return t和x=fun(y)要合起来看,debug下会产生一个临时变量去得到fun(y)的返回值,然后再把临时变量赋值给x,这里就又调用一次;release下会优化这一过程,直接将fun(y)赋值给x,省去临时变量,所以release下总共只调用一次。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式