c++类重载==运算符该怎么写
时间: 2023-10-04 16:11:41 浏览: 49
对于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;
}
};
```
在这个例子中,`MyClass`类重载了`==`运算符,成员函数的名称为`operator==`,参数为一个常量引用。函数体中,我们可以使用`value`成员变量来比较两个对象是否相等。如果相等,则返回`true`,否则返回`false`。
使用重载的`==`运算符比较两个`MyClass`对象的方法如下:
```c++
MyClass a{ 42 };
MyClass b{ 42 };
if (a == b) {
std::cout << "a is equal to b" << std::endl;
} else {
std::cout << "a is not equal to b" << std::endl;
}
```
输出结果应该是`a is equal to b`。
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` 的形式来比较它们是否相等,如果相等,就输出一条消息,否则输出另一条消息。