设计一个时间类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();输出对象的数据成员; 展开
私有数据成员包含小时(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();输出对象的数据成员; 展开
展开全部
//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();
}
#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();
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询