3.为什么重载==,和!=运算符
时间: 2023-02-05 21:06:39 浏览: 82
在 C++ 中,我们可以通过重载== 和 != 运算符来改变这两个运算符的默认行为。举个例子,如果你定义了一个自定义类型,你可能希望两个对象之间的相等性判断不是比较地址,而是比较其中的数据成员。你可以通过重载== 运算符来实现这一点。
另外,重载== 和 != 运算符也可以让代码更加简洁。例如,你可以使用如下代码来比较两个对象是否相等:
if (object1 == object2)
这比使用如下代码更加简洁:
if (object1.isEqualTo(object2))
在 C++ 中,== 和 != 运算符是可以被重载的,但是其他一些运算符是不能被重载的,例如 . 和 ::。
相关问题
c++类重载==运算符该怎么写
对于C++中的类,如果想要实现==运算符的重载,可以使用成员函数或全局函数。
下面是一个使用全局函数的例子:
```
bool operator==(const ClassA& lhs, const ClassA& rhs)
{
return (lhs.val == rhs.val);
}
```
需要注意的是,当定义一个全局函数来重载运算符时,它需要同时访问两个对象。因此,它应该被声明为友元函数,或者每个参数应该在函数中具有公共访问级别。
c++运算符重载==的示例
下面是一个 C++ 运算符重载 `==` 的示例:
```c++
class MyClass {
public:
int value;
// 重载 == 运算符
bool operator==(const MyClass& other) const {
return value == other.value;
}
};
int main() {
MyClass a, b;
a.value = 10;
b.value = 20;
if (a == b) {
std::cout << "a and b are equal" << std::endl;
} else {
std::cout << "a and b are not equal" << std::endl;
}
return 0;
}
```
在上面的示例中,我们定义了一个 `MyClass` 类,其中有一个 `value` 成员变量。我们重载了 `==` 运算符,以便可以使用 `a == b` 的形式来比较两个 `MyClass` 对象是否相等。在 `operator==` 函数中,我们比较了两个对象的 `value` 成员变量是否相等。如果相等,就返回 `true`,否则返回 `false`。在 `main` 函数中,我们创建了两个 `MyClass` 对象 `a` 和 `b`,并将它们的 `value` 成员变量分别设置为 10 和 20。然后我们使用 `a == b` 的形式来比较它们是否相等,如果相等,就输出一条消息,否则输出另一条消息。