一、运算符重载
在上一文章中介绍了C++是如何使用户能够定义多个名称相同但特征表(参数列表)不同的函数的。这被称为函数重载或函数多态,旨在能够用同名的函数来完成相同的基本操作,即使这种操作被用于不同的数据类型。
operator+()重载+运算符,operator*()重载*运算符。
二、一个例子说明
mytime.h
#ifndef MYTIME_H_
#define MYTIME_H_
class Time
{
private:
int hours;
int minutes;
public:
Time();
Time(int h,int n=0);
void Addmin(int m);
void Addhr(int n);
void Reset(int h=0,int m=0);
Time Sum(const Time & t)const;
void Show()const;
Time operator+(const Time & T)const;
};
#endif
#include <iostream>
#include "mytime.h"
Time::Time()
{
hours=minutes=0;
}
Time::Time(int h,int n)
{
hours=h;
minutes=n;
}
void Time::Addmin(int m)
{
minutes+=m;
hours+=minutes/60;
minutes%=60;
}
void Time::Addhr(int n)
{
hours+=n;
}
void Time::Reset(int h,int m)
{
hours=h;
minutes=m;
}
Time Time::Sum(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()const
{
std::cout<<hours<<"hours,"<<minutes<<" minutes";
}
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;
}
#include <iostream>
#include "mytime.h"
using namespace std;
int main()
{
Time plan;
Time coding(2,40);
Time fixing(5,55);
Time total;
cout <<"plan time =";
plan.Show();
cout<<endl;
}
#include <iostream>
#include "mytime.h"
using namespace std;
int main()
{
Time plan;
Time coding(2,40);
Time fixing(5,55);
Time total;
total=coding+fixing;
cout <<"total time =";
total.Show();
cout<<endl;
}
上面是一个简单的例子,对于+重载