c++ 类指针的深拷贝
时间: 2024-06-17 11:06:34 浏览: 228
c++种的浅拷贝与深拷贝
C++中的深拷贝是指在进行对象拷贝时,不仅仅是简单地复制对象的值,而是复制对象所指向的堆内存空间中的内容,从而创建一个全新的、独立的对象。类指针的深拷贝则是指对于含有指针成员变量的类,在进行拷贝构造或赋值操作时,需要对指针所指向的堆内存进行深拷贝,从而保证两个对象互不影响。下面给出一个示例:
```
class MyClass {
public:
int* ptr;
MyClass() {
ptr = new int;
}
// 拷贝构造函数,进行深拷贝
MyClass(const MyClass& obj) {
ptr = new int;
*ptr = *(obj.ptr);
}
// 赋值运算符重载,进行深拷贝
MyClass& operator=(const MyClass& obj) {
if (this == &obj) {
return *this;
}
delete ptr;
ptr = new int;
*ptr = *(obj.ptr);
return *this;
}
~MyClass() {
delete ptr;
}
};
int main() {
MyClass obj1;
*(obj1.ptr) = 10;
MyClass obj2 = obj1; // 拷贝构造函数进行深拷贝
std::cout << *(obj2.ptr) << std::endl; // 输出10
*(obj2.ptr) = 20;
std::cout << *(obj1.ptr) << std::endl; // 输出10,两个对象互不影响
return 0;
}
```
阅读全文