C++ 运算符重载是一种修改或扩展已有运算符行为的方法,使其适应自定义的数据类型。要实现简单的运算符重载,请遵循以下步骤:
-
首先,了解要重载的运算符以及其预期行为。例如,如果要重载加法运算符(+),需要了解其正常情况下是如何工作的。
-
创建一个类,该类将包含要进行运算符重载的数据成员。例如,可以创建一个名为
MyNumber
的类,其中包含一个整数值。
class MyNumber {
public:
int value;
MyNumber(int v) : value(v) {}
};
- 为要重载的运算符提供一个新的成员函数。在这个例子中,我们将为加法运算符(+)提供一个名为
add
的成员函数。确保函数的参数和返回类型与要重载的运算符相匹配。
class MyNumber {
public:
int value;
MyNumber(int v) : value(v) {}
MyNumber add(const MyNumber& other) const {
return MyNumber(value + other.value);
}
};
- (可选)为了使运算符重载看起来更自然,可以为类提供相应的非成员函数重载。在这个例子中,我们可以为加法运算符(+)提供一个非成员函数。
MyNumber operator+(const MyNumber& lhs, const MyNumber& rhs) {
return MyNumber(lhs.value + rhs.value);
}
现在,已经成功实现了简单的 C++ 运算符重载。可以使用以下代码测试重载的运算符:
#include <iostream>
int main() {
MyNumber a(3);
MyNumber b(4);
MyNumber c = a.add(b); // 使用成员函数重载的运算符
MyNumber d = a + b; // 使用非成员函数重载的运算符
std::cout << "a + b = " << c.value << std::endl; // 输出:a + b = 7
std::cout << "a + b = " << d.value << std::endl; // 输出:a + b = 7
return 0;
}