c++类的拷贝
时间: 2023-09-04 22:11:33 浏览: 84
C++中的类拷贝可以分为浅拷贝和深拷贝两种方式。
浅拷贝指的是直接复制源对象的值到目标对象中,包括指向动态分配的内存的指针。因此,如果源对象和目标对象共享同一块内存,那么对其中一个对象进行修改可能会影响到另一个对象。默认情况下,C++中的拷贝构造函数和赋值操作符都是浅拷贝。
深拷贝指的是在拷贝对象时,为目标对象分配一块新的内存空间,并将源对象的值复制到该内存空间中。这样,源对象和目标对象就不再共享同一块内存,对其中一个对象的修改也不会影响到另一个对象。如果类中包含有指针成员变量,则需要自定义拷贝构造函数和赋值操作符,实现深拷贝。
例如,下面是一个包含指针成员变量的类的深拷贝实现:
```c++
class MyClass {
public:
MyClass(const MyClass& other) {
// 手动分配内存,将指针指向新的内存空间
m_ptr = new int(*other.m_ptr);
}
MyClass& operator=(const MyClass& other) {
if (this != &other) {
// 释放原有内存,重新分配内存,并将指针指向新的内存空间
delete m_ptr;
m_ptr = new int(*other.m_ptr);
}
return *this;
}
~MyClass() {
// 释放动态分配的内存
delete m_ptr;
}
private:
int* m_ptr;
};
```
阅读全文