1.重载是c++的多态,运算符重载是c++多态中的一种形式,实现同一函数名有不同的参数,执行不同的功能 ----(例'*',将*号用于地址将得到地址中的值,将*号放于俩数之间 a*b 是求a与b的积)
2.时间函数重载demon(计算一天花费的时间)
#include<iostream>
using namespace std;
class Time
{
private:
int hours;
int minutes;
public:
Time(); //构造函数
Time(int h,int m=0); //构造函数
void AddMin(int m);//分钟增加
void AddHr(int h);//小时增加
void Reset(int h=0,int m=0);
Time Sum(const Time & t) const;
void show() const;
};
Time::Time()
{
hours = minutes = 0;
}
Time::Time(int h,int m)
{
hours = h;
minutes = m;
}
void Time::AddMin(int m)
{
minutes +=m;
hours +=minutes / 60;
minutes %= 60;
}
void Time::AddHr(int h)
{
hours += h;
}
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
{
cout<<hours<<"小时"<<minutes<<"分"<<endl;
}
int main()
{
Time planning;
Time am(3,30);
Time pm(4,35);
Time total;
cout<<"planning time is ";
planning.show();
cout<<"am time is ";
am.show();
cout<<"pm time is ";
pm.show();
total = am.Sum(pm);
cout<<"一天耗时";
total.show();
return 0;
}
运行结果:
2-1重载 + 号运算符operator+()
替换Sum()的名称即可重载 + 号
#include<iostream>
using namespace std;
class Time
{
private:
int hours;
int minutes;
public:
Time(); //构造函数
Time(int h,int m=0); //构造函数
void AddMin(int m);//分钟增加
void AddHr(int h);//小时增加
void Reset(int h=0,int m=0);
Time operator+(const Time & t) const;
void show() const;
};
...
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;
}
int main()
{
Time planning;
Time am(3,30);
Time pm(4,35);
Time total;
cout<<"planning time is ";
planning.show();
cout<<"am time is ";
am.show();
cout<<"pm time is ";
pm.show();
total = am + pm;//重载后可以使用+号计算时间求和,代替total = am.Sum(pm);
cout<<"一天耗时 am + pm =";
total.show();
return 0;
}
运行结果: