📅  最后修改于: 2023-12-03 15:12:19.127000             🧑  作者: Mango
C++ 允许程序员对已有的运算符重新进行定义,这个过程被称为运算符重载。也就是说,我们可以将运算符用于其它数据类型,以完成其它操作。
运算符重载使用关键字 operator,后面跟着要重载的运算符。比如,要重载加法运算符 +,则语法如下:
返回值类型 operator+(参数列表) {
// 函数体
}
其中,对于这个例子而言,返回值类型就是该运算符执行后的返回值类型,而参数列表就是该运算符运算的两个操作数。需要注意的是,运算符函数名必须以 operator 开头。
以重载加法运算符为例,假设我们有一个类 MyInt
,其中封装了一个 int 类型的成员变量 val
,则可以按照如下方式重载加法运算符:
class MyInt {
public:
MyInt(int num) : val(num) {}
int val;
MyInt operator+(const MyInt& other) {
MyInt res(val + other.val);
return res;
}
};
则在使用时,可以像以下这样直接使用加号运算符:
MyInt a(1), b(2);
MyInt res = a + b;
此时,res 的值为 3。
运算符重载不改变运算符的优先级。
不能创建新的运算符,只能对已有的运算符进行重载。
一般情况下应该将重载的函数声明为类的成员函数,以便能够访问类的成员变量。
对于某些运算符,可以进行友元函数的重载。
在运算符重载时,应该注意重载函数的返回值和参数类型,不能随意修改。