C++中重载=运算符案例
时间: 2024-04-16 12:27:28 浏览: 97
下面是一个示例,展示了如何在C++中重载赋值运算符(=):
```cpp
#include <iostream>
class MyClass {
private:
int value;
public:
// 构造函数
MyClass(int val) : value(val) {}
// 重载赋值运算符
MyClass& operator=(const MyClass& other) {
if (this != &other) {
value = other.value;
}
return *this;
}
// 打印值的函数
void printValue() const {
std::cout << "Value: " << value << std::endl;
}
};
int main() {
MyClass obj1(5);
MyClass obj2(10);
obj1.printValue(); // 输出 Value: 5
obj2.printValue(); // 输出 Value: 10
obj1 = obj2; // 使用重载的赋值运算符
obj1.printValue(); // 输出 Value: 10
return 0;
}
```
在上面的示例中,我们定义了一个名为MyClass的类,其中包含一个私有成员变量value和一个公有的打印值的函数printValue。然后,我们重载了赋值运算符=,以便在对象之间进行赋值时,能够正确地复制value的值。
在main函数中,我们创建了两个MyClass对象obj1和obj2,并分别初始化为5和10。然后,我们调用printValue函数输出它们的值。
接下来,我们使用obj1 = obj2来赋值,这会调用重载的赋值运算符。在赋值过程中,obj1的value将被更新为obj2的value,最后我们再次调用printValue函数,验证obj1的值是否被正确地更新为10。
运行上述代码,将会得到以下输出:
```
Value: 5
Value: 10
Value: 10
```
这表明重载的赋值运算符成功地将obj2的值赋给了obj1。
阅读全文