C++这个复制构造函数,怎么调用了2次呢

 我来答
东郭广英归卯
2019-12-18 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.3万
采纳率:34%
帮助的人:611万
展开全部
来分析一下你的程序运行情况。。

从main()开始,

第一行
A
&
u
=ss();

首先调用
ss()函数,在函数里面定义了一个变量w,调用的是2个参数的构造函数

然后返回,看看返回类型,是A,是属于值传递,

恰好你做了一个复制构造函数

而你需要的是A&
所以编译器会做无关紧要的转换,把A
转换成A&
这样就开始了

第一个
A(A
&
i)

然后主函数里面是
A
&
u
=
又一次调用复制构造函数。

然后u就
引用了ss
里面生成的值,但是在赋值完成的时候,ss函数就会消亡掉。

在ss里面的变量的生存期已经没了,

所以呢u引用的内存里面是没有东西或者被更改了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式