运算符重载

2019-11-06  本文已影响0人  带带吴腾跃

例如“+”法运算符并不能用于两个类或者两个数组直接相加,但有个方法可以用“+”操作符使其直接相加,那就是重载,这也是体现C++多态的一一种形式。

重载的声明:

返回值类型 operator 要重载但运算符 (传入的参数)

其实仔细看不难发现,重载的声明跟函数声明很像,只需要把函数名字改成 operator 要重载的运算符 即可。

我们通过一个使用类的例子来应用运算符重载。
声明一个时间类,包含小时和分,类成员函数详细内容不再写出。

class Time
{
private:
    int hours;
    int minutes;
public:
    Time();
    Time(int h,int m = 0);
    void AddHr(int h);
    void AddMin(int m);
    void Reset(int h = 0,int m = 0);
    Time Sum(const Time & t)const;
    void show()const;
}

此时我们可以调用类内函数Sum来求两个Time类型的和。

Time a,b;
a.Sum(b)const;

现在我们把类内函数Sum改成“+”法运算符的重载,实现相同的功能。
只需要将Time Sum(const Time & t)const;次函数声明的函数名改成operator+,如下:

Time operator+(const Time & t)const;

此时,我们就可以对a,b两个Time类型的数据直接相加。(函数内容就不再赘述)

重载的限制

int a;
% b; //invalid
上一篇 下一篇

猜你喜欢

热点阅读