📜  复制构造函数何时调用?(1)

📅  最后修改于: 2023-12-03 15:37:50.734000             🧑  作者: Mango

复制构造函数何时调用?

在C++中,复制构造函数是一种特殊的构造函数,它用于创建一个对象,该对象是已经存在的对象的副本。复制构造函数在以下情况下被调用:

  1. 当用一个对象初始化另一个对象的时候
MyClass obj1;
MyClass obj2 = obj1;  // 复制构造函数被调用
  1. 当按值传递参数以及从函数返回对象时
MyClass func(MyClass obj) {
  // ...
}

MyClass obj1;
MyClass obj2 = func(obj1);  // 复制构造函数被调用
  1. 当使用赋值运算符 '=' 把一个对象赋值给另一个对象时
MyClass obj1, obj2;
obj2 = obj1;  // 复制构造函数被调用

需要注意的是,当一个对象作为参数按值传递时,它的复制构造函数会被调用,因此最好使用引用来避免复制构造函数的调用。

MyClass func(MyClass &obj) {
  // ...
}

MyClass obj1;
MyClass obj2 = func(obj1);  // 复制构造函数不被调用

总之,复制构造函数在C++编程中发挥着重要的作用,在以上提到的情况下,它会被自动调用以创建对象的副本,开发者需要时刻关注对象的复制构造函数的正确性和效率。