c++类的=操作
时间: 2023-08-10 17:09:44 浏览: 40
在C++中,=操作符是用来将一个对象的值赋给另一个对象的。当我们创建一个类时,默认情况下,编译器会生成一个默认的=操作符来执行这个操作。这个默认的=操作符执行的是浅拷贝,即只复制对象的成员变量的值。
如果我们需要执行深拷贝,即复制对象的成员变量的值以及指向动态内存分配的指针所指向的对象的值,我们需要自己定义=操作符。以下是一个自定义=操作符的例子:
```c++
class MyClass {
public:
MyClass& operator=(const MyClass& other) {
if (this != &other) { // 检查是否是自我赋值
// 复制成员变量的值
this->member1 = other.member1;
this->member2 = other.member2;
// 复制动态内存分配的指针所指向的对象的值
delete this->ptr;
this->ptr = new int(*other.ptr);
}
return *this;
}
private:
int member1;
float member2;
int* ptr;
};
```
在这个例子中,我们使用引用返回类型来允许=操作符的链式调用。我们首先检查是否是自我赋值,然后复制成员变量的值,并且在复制指针的值时,我们需要先删除原有的指针所指向的对象,再重新创建一个新对象并复制其值。