来分析一下你的程序运行情况。。
从main()开始,
第一行
A
&
u
=ss();
首先调用
ss()函数,在函数里面定义了一个变量w,调用的是2个参数的
构造函数。
然后返回,看看返回类型,是A,是属于值传递,
恰好你做了一个复制构造函数
而你需要的是A&
所以
编译器会做无关紧要的转换,把A
转换成A&
这样就开始了
第一个
A(A
&
i)
然后主函数里面是
A
&
u
=
又一次调用复制构造函数。
然后u就
引用了ss
里面生成的值,但是在赋值完成的时候,ss函数就会消亡掉。
在ss里面的变量的生存期已经没了,
所以呢u引用的内存里面是没有东西或者被更改了。