c++,重载==操作符
时间: 2023-08-21 09:01:51 浏览: 95
在C++中,可以使用运算符重载机制来重载"=="操作符,以使得自定义类型的对象之间可以进行相等性比较。下面是一个示例:
```c++
class MyClass {
public:
int value;
// 重载"=="操作符
bool operator==(const MyClass& other) const {
return (value == other.value);
}
};
```
在这个示例中,MyClass类重载了"=="操作符。这个操作符的实现方式是比较两个MyClass对象的value成员变量是否相等。由于这里只是比较值,因此我们使用了const关键字来表示这个函数不会修改类的成员变量。
使用重载的"=="操作符时,可以像使用内置类型的"=="操作符一样使用它,例如:
```c++
MyClass obj1, obj2;
obj1.value = 10;
obj2.value = 20;
if (obj1 == obj2) { // 调用重载的"=="操作符
cout << "obj1 equals obj2" << endl;
} else {
cout << "obj1 does not equal obj2" << endl;
}
```
在这个示例中,我们比较了obj1和obj2两个对象是否相等,由于它们的value成员变量不相等,因此输出"obj1 does not equal obj2"。
相关问题
C++ =操作符重载
在C++中,=操作符不能被重载。这是因为=操作符用于赋值,它已经有了固定的语义和行为。你可以重载其他运算符,比如+、-、*等,但不能重载=操作符。\[1\]
#### 引用[.reference_title]
- *1* *3* [十个 C++ 运算符重载示例,看完不懂打我...](https://blog.csdn.net/luckydarcy/article/details/121599696)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [C++:运算符重载](https://blog.csdn.net/qq_53826699/article/details/118118074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
c++ 重载等号操作符例子
下面是一个重载等号操作符的例子:
```cpp
#include <iostream>
class MyClass {
public:
MyClass(int x) : x_(x) {}
int GetX() const { return x_; }
void SetX(int x) { x_ = x; }
// 重载等号操作符
MyClass& operator=(const MyClass& other) {
x_ = other.x_;
return *this;
}
private:
int x_;
};
int main() {
MyClass a(1);
MyClass b(2);
a = b; // 调用重载的等号操作符
std::cout << a.GetX() << std::endl; // 输出 2
return 0;
}
```
在这个例子中,我们重载了等号操作符,使得对象之间能够赋值。这个重载的等号操作符接受一个 const MyClass& 类型的参数,并将其赋值给当前对象。
阅读全文