📅  最后修改于: 2023-12-03 14:59:36.923000             🧑  作者: Mango
在C ++中,运算符重载是一种特殊的多态,它允许运算符作用于自定义数据类型,如类或结构体。这样一来,可以方便地使用运算符进行各种类型的自定义操作,从而让代码更加简洁和易读。
现在有一个自定义的类MyNumber
,其中包含一个整型成员变量num
。现在希望实现运算符重载,使得可以通过运算符+
和-
对MyNumber
之间进行运算。
对于上述问题,我们可以通过运算符重载来实现。C++支持对大部分运算符进行重载,包括+
,-
等。
下面是MyNumber
类中对+
和-
运算符进行重载的函数定义:
class MyNumber {
public:
// 构造函数
MyNumber(int n) : num(n) {}
// + 运算符重载
MyNumber operator+(const MyNumber& rhs) const {
return MyNumber(num + rhs.num);
}
// - 运算符重载
MyNumber operator-(const MyNumber& rhs) const {
return MyNumber(num - rhs.num);
}
private:
int num;
};
需要注意的是,在上述代码中,我们通过operator
关键字声明了+
和-
运算符的重载函数,这两个函数返回的是MyNumber
类型的变量。参数中的rhs
表示的是右操作数,如果使用+
运算符,那么左操作数即为调用该函数的对象本身。
使用运算符重载的方式和标准操作符使用的方式一样,直接在运算符两侧加上操作数即可,如:
MyNumber n1(1);
MyNumber n2(2);
MyNumber n3 = n1 + n2;
MyNumber n4 = n2 - n1;
按照上述过程,我们成功实现了运算符重载,使得MyNumber
类型的对象可以进行加减运算。
运算符重载在C++中非常有用,可以使得自定义类型的操作和使用和内置类型一样方便。需要注意的是,使用运算符重载可能会导致代码可读性下降,因此应该慎重使用。