拷贝构造函数的三个时机
时间: 2024-09-13 09:12:17 浏览: 46
毕业设计&课设_百脑汇商城管理系统:Java 毕设项目.zip
拷贝构造函数是一种特殊的构造函数,它用于创建一个新对象作为现有对象的副本。在C++中,拷贝构造函数通常具有以下三个使用时机:
1. 当使用一个对象去初始化同类的另一个新对象时,编译器会自动调用拷贝构造函数。例如:
```cpp
MyClass obj1; // 假设 MyClass 是一个类
MyClass obj2 = obj1; // 使用 obj1 初始化 obj2,会调用拷贝构造函数
```
2. 当函数的参数为类的非引用对象时,函数调用前会创建该对象的副本,此时会调用拷贝构造函数。例如:
```cpp
void function(MyClass obj) { /* ... */ } // 参数 obj 是一个非引用对象
function(obj1); // 在调用 function 时,会调用拷贝构造函数以复制 obj1
```
3. 当函数返回类对象时,返回的临时对象会调用拷贝构造函数来复制函数内部创建的对象。例如:
```cpp
MyClass function() {
MyClass temp;
// ... 其他操作
return temp; // 返回 temp 时,会调用拷贝构造函数创建临时对象的副本
}
MyClass obj3 = function(); // 接收返回值时,也会调用一次拷贝构造函数
```
阅读全文