📜  C ++ |运算符重载|问题3(1)

📅  最后修改于: 2023-12-03 14:59:36.923000             🧑  作者: Mango

C++ 运算符重载-问题三

在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++中非常有用,可以使得自定义类型的操作和使用和内置类型一样方便。需要注意的是,使用运算符重载可能会导致代码可读性下降,因此应该慎重使用。