天天看點

C++ stl重載運算符

//為什麼要重載運算符

/*

1.C++中預定義的運算符的操作對象隻能是基本的資料類型

2.使用者自定義類型,需要類似運算符,使其能夠用于特定類型執行特定的操作

3.運算符重載的實質是函數重載

什麼是重載的運算符?

簡單來說,就是對已有的運算符重新進行定義,賦予其另一種功能,以适應不同的資料類型

#include <iostream>
using namespace std;

class Time
{
    public:
        Time();
        Time(int h,int m=0);
        Time operator+(const Time& t)const;
        void Show();
    private:
        int hours;
        int minutes;
};

Time::Time()
{
    hours=minutes=0;
}

Time::Time(int h,int m)
{
    hours=h;
    minutes=m;
}


//+号運算符重載:定義兩個Time對象相加
//可以把"operator+"了解為一個特殊函數
//特殊在其參數是Time對象,傳回值是Time對象

Time Time::operator+(const Time& t)const
{
    Time sum;
    sum.minutes=minutes+t.minutes;
    sum.hours=hours+t.hours+sum.minutes/60;
    sum.minutes %=60;
    return sum;
}

void Time::Show()
{
    cout<<"hours:"<<hours<<"minutes:"<<minutes<<endl;
}

int main()
{
    Time codeTime(2,40);
    Time fixTime(5,55);
    Time totalTime;

    //由于+的操作數是兩個Time對象,是以調用重載運算符
    //相當于totalTime=codeTime.operator+(fixTime)
    totalTime=codeTime+fixTime;
    totalTime.Show();

}
/*_____________________________________________________________________________
結果:
hours:8minutes:35
_____________________________________________________________________________*/