//为什么要重载运算符
/*
1.C++中预定义的运算符的操作对象只能是基本的数据类型
2.用户自定义类型,需要类似运算符,使其能够用于特定类型执行特定的操作
3.运算符重载的实质是函数重载
什么是重载的运算符?
简单来说,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型
如何实现?
运算符重载是通过创建运算符函数实现的,运算符函数定义了重载的运算符将要进行的操作。
运算符函数的定义与其他函数的定义类似,唯一的区别是运算符函数的函数名是由关键字operator和
其后面要重载的运算符符号构成
运算符重载为类成员函数的一般格式为
<函数类型>operator <运算符>(<参数表)const
{
<函数体>
}
#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
_____________________________________________________________________________*/