第一个1是 A y(x) 调用了构造函数A(CONST A &a){cout<<1<<" ";}第二个1是在执行fun(y)时 其函数体执行了A(a) 产生了一个1。产生2的原因是 operator= 重构了=运算符 在执行z=fun(y)时先按顺序执行了 fun(y)接下来执行重构了的 = 产生了 2;