📜  运算符重载 - C++ (1)

📅  最后修改于: 2023-12-03 15:12:19.127000             🧑  作者: Mango

运算符重载 - C++

什么是运算符重载

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。

运算符重载的注意事项
  1. 运算符重载不改变运算符的优先级。

  2. 不能创建新的运算符,只能对已有的运算符进行重载。

  3. 一般情况下应该将重载的函数声明为类的成员函数,以便能够访问类的成员变量。

  4. 对于某些运算符,可以进行友元函数的重载。

  5. 在运算符重载时,应该注意重载函数的返回值和参数类型,不能随意修改。

参考文献
  1. C++ 运算符重载 - 菜鸟教程

  2. C++ 运算符重载 - C++ 编程实例