拷贝构造函数被调用的三种情况

xiaoxiao2025-10-20  8

拷贝构造函数被调用的三种情况

定义一个Complex类

class Complex { pulic: double real, image; Complex(){} Complex(const Complex &c) {//构造函数的参数一定是本类的引用 real = c.real; imag = c.image; cout << "Copy Constructor called"; } };

1.当用一个对象去初始化同类的另一个对象时

Complex c1; Complex c2(c1); Complex c2 = c1; //初始化语句,非赋值函数

2.如果某函数有一个参数是类A的对象,那么该函数被调用时,类A的赋值构造函数将被调用

void Func(Complex a1){} int main() { Complex a2; Func(a2); return 0; }

a1的值未必等于a2,具体看拷贝构造函数的内容(有没有赋值)。 3.如果函数的返回值是类A的对象时,则函数返回时,A的拷贝构造函数将被调用

Complex Func() { Comeplex b; b.real = 1; b.image = 1; return b; } int main() { cout << Func().real << endl; return 0; }

返回的值未必相等,取决于拷贝构造函数中是否进行了赋值操作。

转载请注明原文地址: https://www.6miu.com/read-5038266.html

最新回复(0)