拷贝构造函数
1.只有一个参数, 即对同类对象的引用。形如 X::X(X&)或X::X(const X &)二选一。
不允许有形如 X::X(X)的构造函数。
3.如果没有定义复制构造函数,那么编译器生成默认复制构造函数。默认的复制构造函数完成复制功能。
如果定义的自己的复制构造函数,则默认的复制构造函数不存在。复制构造函数起作用的三种情况:
1)当用一个对象去初始化同类的另一个对象时。
Complex c2(c1);
Complex c2 = c1; //初始化语句,非赋值语句
2)如果某函数有一个参数是类 A 的对象,那么该函数被调用时,类A的复制构造函数将被调用。
void Func(A a1){ }
int main(){
A a2;
Func(a2);
return 0;
}
3) 如果函数的返回值是类A的对象时,则函数返回时,A的复制构造函数被调用 :
A Func() {
A b(4);
return b;
}
int main() {
cout << Func().v << endl;
return 0;
}