设计一个时间类Time C++

设计一个时间类Time,其结构如下:私有数据成员包含小时(Hour)、分钟(Minite)和秒(Second);三个重载构造函数:=... 设计一个时间类Time,其结构如下:
 私有数据成员包含小时(Hour)、分钟(Minite)和秒(Second);
 三个重载构造函数:
 一个是无参数的构造函数;
 一个是带坐标值参数的构造函数,实现对数据成员的初始化;
 一个是copy构造函数,实现用一个对象初始化本对象;
 成员函数实现时间对象相加、减运算:
 Time& Add(Time&);
 Time& Sub(Time&);
 成员函数实现时间对象自增++、自减− −运算:
 void operator + + ();//自增1秒(按两种结合形式)
 void operator − − ();//自减1秒(按两种结合形式)
 友元函数实现时间对象相加、减的运算符重载:
 friend Time& operator + (Time&, Time&);
 friend Time& operator − (Time&, Time&);
 公有成员函数void Display();输出对象的数据成员;
展开
 我来答
在世贸天阶灌篮的高飞燕草
推荐于2016-11-12 · TA获得超过2378个赞
知道大有可为答主
回答量:2070
采纳率:0%
帮助的人:2022万
展开全部
//OK,好不容易写完了,可惜分太少了,算了,权当练习吧,VC6.0下测试通过

#include<iostream.h>
#include<string.h>
#include<math.h>
class Time
{
public:
Time():Hour(0),Minute(0),Second(0){}
Time(int h,int m,int s):Hour(h),Minute(m),Second(s){}
Time (Time&t):Hour(t.Hour),Minute(t.Minute),Second(t.Second){}
Time& Add(Time&);
Time& Sub(Time&);
friend Time& operator+( Time&, Time&);
friend Time& operator - (Time&, Time&);
void operator ++();//自增1秒(按两种结合形式)
void operator -- ();//自减1秒(按两种结合形式)
void operator ++(int);//自增1秒(按两种结合形式)
void operator -- (int);//自减1秒(按两种结合形式)
void Display()
{cout<<Hour<<":"<<Minute<<":"<<Second<<endl;}
private:
int Hour,Minute,Second;
};

Time& operator+( Time&t1, Time&t2)
{
int temp=t1.Hour*3600+t1.Minute*60+t1.Second+(t2.Hour*3600+t2.Minute*60+t2.Second);
t1.Hour=temp/3600;
t1.Minute=(temp%3600)/60;
t1.Second=temp%3600%60;
return t1;
}
Time& operator-( Time&t1, Time&t2)
{

int temp=t1.Hour*3600+t1.Minute*60+t1.Second-(t2.Hour*3600+t2.Minute*60+t2.Second);
t1.Hour=temp/3600;
t1.Minute=(temp%3600)/60;
t1.Second=temp%3600%60;
return t1;
}
Time& Time::Add(Time&t1)
{
int temp=t1.Hour*3600+t1.Minute*60+t1.Second+(Hour*3600+Minute*60+Second);
Hour=temp/3600;
Minute=(temp%3600)/60;
Second=temp%3600%60;
return *this;
}
Time& Time::Sub(Time&t1)
{

int temp=(Hour*3600+Minute*60+Second)-(t1.Hour*3600+t1.Minute*60+t1.Second);
Hour=temp/3600;
Minute=(temp%3600)/60;
Second=temp%3600%60;
return *this;
}
void Time::operator ++(){Second++;}
void Time::operator --(){Second--;}
void Time::operator ++(int){++Second;}
void Time::operator --(int){--Second;}

void main()
{
Time t1(1,5,6),t2(5,59,59);
t1=t1+t2; //测试+
t1.Display();
t2.Add(t1); //测试Add
t2.Display();
t2++; //测试++
t2.Display();
t2--; //测试--
t2.Display();
t2.Sub(t2); //测试Sub
t2.Display();
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式