有些东西搞混了,记录下。
C++复制构造函数起作用的三种情况:
1)当用一个对象去初始化同类的另一个对象时
Complex c2(c1);
//和下面那一句等价
Complex c2 = c1;//这里是初始化!不是赋值!
//但是如果是如下就不调用赋值构造函数
Complex c1;
c1 = c2;//这叫赋值!不调用复制构造函数!
2)如果某函数有一个参数是类A的对象,那么该函数被调用时,类A的复制构造函数将被调用。
void Func(A a){}
int main(){
A a1;
Func(a1);
return 0;
}
3)如果函数的返回值是类A的对象时,则函数返回时,A的复制构造函数被调用。
A Func(){
A b(4);
return b;
}
int main(){
cout << Func().v;
return 0;
}