问题描述及代码:
(1)head.h
/*
*copyright (c) 2016,烟台大学计算机学院
*All rights reserved.
*文件名称:hellow.cpp
*作者:田甜
*完成日期:2016年5月17日
*版本号:v1.0
*
*问题描述:实现Time类中的运算符重载。
*输入描述:///
*程序输出:///
*/
#ifndef HEAD_H_INCLUDED
#define HEAD_H_INCLUDED
using namespace std;
class CTime
{
private:
unsigned short int hour;
unsigned short int minute;
unsigned short int second;
public:
CTime(int h,int m,int s):hour(h),minute(m),second(s){}
void set_time(int h,int m,int s);
void display();
bool operator > (const CTime& t);
bool operator < (const CTime& t);
bool operator >=(const CTime& t);
bool operator <=(const CTime& t);
bool operator ==(const CTime& t);
bool operator !=(const CTime& t);
};
#endif // HEAD_H_INCLUDED
(2).bool.cpp
#include "head.h"
#include<iostream>
void CTime::set_time(int h,int m,int s)
{
hour=h;
minute=m;
second=s;
}
void CTime::display()
{
cout<<hour<<":"<<minute<<":"<<second<<endl;
}
bool CTime::operator>(const CTime& t)
{
if(hour<=t.hour)return false;
else if(minute<=t.minute)return false;
else if(second<=t.second)return false;
else return true;
}
bool CTime::operator<(const CTime& t)
{
if(hour>=t.hour)return false;
else if(minute>=t.minute)return false;
else if(second>=t.second)return false;
else return true;
}
bool CTime::operator<=(const CTime& t)
{
return !(*this<t);
}
bool CTime::operator>=(const CTime& t)
{
return !(*this>t);
}
bool CTime::operator==(const CTime& t)
{
if(hour!=t.hour)return false;
else if(minute!=t.minute)return false;
else if(second!=second)return false;
else return true;
}
bool CTime::operator!=(const CTime& t)
{
return !(*this==t);
}
(3).main.cpp
#include <iostream>
#include "head.h"
using namespace std;
int main()
{
CTime t1(11,10,5),t2(12,10,5);
if(t1>t2)
cout<<"t1比t2大"<<endl;
else
cout<<"t2比t1大"<<endl;
if(t1!=t2)
cout<<"t1t2不相等"<<endl;
CTime t3(1,1,1),t4(1,1,1);
if(t3==t4)
cout<<"t3t4相等"<<endl;
return 0;
}
运行结果:
心得体会:
当已经定义了>运算符重载函数,在之后定义>=的时候就简便很多,可以用return !(*this>t);;来表示