使用copy constructor的三种情况
有三种情况,会以一个object的内容作为另一个class object的初值。
1.显式的以一个object的内容作为另一个class object的初值
class X{......};
X x;
X xx = x;
2.当object被当做参数交给某个函数时
void foo(X x);
void bar(){
X xx;
foo(xx);
}
3.当函数传回一个class object时
X foo(){
X xx;
return xx;
}
Explicit Copy Constructor
用户显式定义的copy consyructor大部分情况下以另一个同类实例作为初值。
如:
X::X(const X& x);
Y::Y(const Y& y,int = 0);
并注意传入参数必须是reference的
因为如果定义如下copy consyructor