在 C++ 中,值的拷贝构造函数是一种特殊的构造函数,它用于通过已存在的对象来初始化新对象。当以下情况发生时,将调用拷贝构造函数:
class MyClass {
public:
MyClass() {} // 默认构造函数
MyClass(const MyClass& other) {} // 拷贝构造函数
};
MyClass obj1;
MyClass obj2 = obj1; // 调用拷贝构造函数
void myFunction(MyClass obj) {
// 函数实现
}
MyClass obj1;
myFunction(obj1); // 调用拷贝构造函数
MyClass myFunction() {
MyClass obj;
return obj; // 调用拷贝构造函数
}
MyClass obj1 = myFunction(); // 调用拷贝构造函数
拷贝构造函数的工作原理是创建一个新对象,并将现有对象的所有成员变量复制到新对象中。这样,新对象就具有与现有对象相同的状态。拷贝构造函数的基本形式如下:
class ClassName {
public:
ClassName(const ClassName& other) {
// 复制 other 对象的成员变量到新对象
}
};
请注意,拷贝构造函数应该接受一个常量引用参数(const ClassName&),以避免不必要的拷贝操作。此外,拷贝构造函数应该确保正确地复制对象的所有成员变量,包括动态分配的内存。