自定义深拷贝拷贝构造函数
时间: 2023-10-17 12:35:16 浏览: 78
自定义深拷贝拷贝构造函数是为了在对象拷贝时创建一个新的对象,并深层次地复制其成员变量的值。下面是一个示例的自定义深拷贝拷贝构造函数的实现:
```cpp
#include <iostream>
class MyClass {
private:
int* data;
public:
MyClass(int value) {
data = new int;
*data = value;
}
// 自定义拷贝构造函数
MyClass(const MyClass& other) {
data = new int;
*data = *other.data;
}
~MyClass() {
delete data;
}
void printData() {
std::cout << "Data: " << *data << std::endl;
}
};
int main() {
MyClass obj1(10);
obj1.printData();
// 使用拷贝构造函数创建新对象
MyClass obj2 = obj1;
obj2.printData();
return 0;
}
```
在上述示例中,`MyClass` 类具有一个指向 `int` 类型数据的指针 `data`。在构造函数中,我们动态地分配内存并将其值设置为输入的值。在自定义的拷贝构造函数中,我们重新分配了内存,并将其值设置为另一个对象的 `data` 值。
当我们使用拷贝构造函数创建 `obj2` 对象时,它会创建一个新的对象,并将 `obj1` 的成员变量 `data` 的值复制给它。这样,每个对象都有自己的独立内存空间,修改一个对象的 `data` 不会影响另一个对象。
需要注意的是,由于我们在构造函数和拷贝构造函数中使用了动态分配的内存,因此我们还需要在类的析构函数中释放这些内存,以避免内存泄漏。
阅读全文