在 C++ 中,运算符重载是通过为已有的运算符赋予新的意义,使其作用于自定义的数据类型上。运算符重载的语法是在自定义类型的名称后加上运算符,并使用范围解析运算符 ::
。
以下是一个简单的例子,演示了如何为一个自定义的类 Fraction
重载加法运算符 +
:
class Fraction {
public:
// 构造函数
Fraction(int numerator = 0, int denominator = 1)
: numerator_(numerator), denominator_(denominator) {}
// 重载加法运算符
Fraction operator+(const Fraction& other) const {
int newNumerator = numerator_ * other.denominator_ + other.numerator_ * denominator_;
int newDenominator = denominator_ * other.denominator_;
return Fraction(newNumerator, newDenominator);
}
private:
int numerator_;
int denominator_;
};
在上面的例子中,我们定义了一个 Fraction
类,并重载了加法运算符 +
。在重载的函数中,我们使用了传入参数的成员变量和本类的成员变量计算出了新的分数,并返回了一个 Fraction
对象。
除了加法运算符,我们还可以重载其他运算符,例如减法运算符 -
、乘法运算符 *
、除法运算符 /
等等。重载的运算符可以像任意其他函数一样进行调用,例如:
Fraction f1(1, 2);
Fraction f2(3, 4);
Fraction f3 = f1 + f2; // 调用重载的加法运算符