Shino_Asada

本帖最后由 Shino_Asada 于 2015-10-4 13:52 编辑

point p2(p1);

这个调用是没问题的,因为p1是左值

会输出"调用拷贝构造函数"

p2 = g();

g返回右值

point&

非const左值引用不能引用右值,所以不会调用你的拷贝构造函数

CB调用了编译器合成的拷贝构造函数,应该是这个样子的

Point::Point(const Point&);

你也看到了,p2.x和y和g返回的的point一样

拷贝构造函数不应该改变被拷贝对象,所以应该是》》》》const《《《《《 Point&

VS的嘛……233333333嘛~至于f(p2);

f接受的是Point&

所以不会发生拷贝

(小声:引用的底层实现一般是指针哟)