c++ 基于时间类的运算符重载实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验:定义一个时间类Time(时,分,秒),通过操作符重载实现:

时间的比较(==、!=、>、>=、<、<=)、时间增加/减少若干秒(+=、-=)

由题意,我定义了一个时间类Time,并且定义时(shi),分(fen),秒(miao)这些私有数据成员。

然后在main函数那里就可以通过构造函数定义一个时间了。如下图所示:

由上图可知,我还对(==、!=、>、>=、<、<=)这些运算符进行了重载,返回bool类型的值。而且,对于时间增加/减少若干秒,我用友元函数方式让一个时间类Time和int类型的数值(秒)相加。下面我将对各种运算符重载做详细说明。

1:首先,我们来看“==”这个运算符重载。

它在Cpp文件里的定义如下:

由上可知,只有两个时间类的时,分,秒分别相等,才能返回一个true值,否则返回一个false值。具体程序是通过条件语句构造而成,一目了然。而我们在main函数里先定义两个时间类time0,time1。分别让它们相等和不相等运行一次,实验结果如下:

2:我们来看“!=”这个运算符重载。

它在Cpp文件里定义如下:

由上可知,它就是把“==”运算符重载函数里的true和false互换而已,却起到了相反的效

果。实验结果如下:

3:我们来看“>”这个运算符重载。

它在Cpp文件里定义如下:

由上可知,程序有点复杂了,不过思路还是很清晰的。首先,通过比较两个时间类的时,看它们是否符合大于等于关系,如果没有则返回false值。然后比较时是否相等,如果不相等则说明第一个类的时一定大于第二个类的时,则返回true值。比较完时,如果在时相等的情况下,再来比较分,与比较时的程序相同,能轻松得出两个类的分的大小。在分也相等的情况下,再来比较秒,如果大于则返回true值,否则返回false值。至此,两类的时间大小可比较出来是否存在大于关系。鉴于有多种情况,我就其中3种进行截图。实验结果如下:

………………………………..

4:我们来看“>=”这个运算符重载。

它在Cpp文件里定义如下:

相比“=”这种情况,程序的量相差无几。不过在一个地方做了改动。最后在比较秒的时候,如果满足大于等于关系就能都返回true值。实验结果如下:

…………………………..

5:我们来看“<”这个运算符重载。

它在Cpp文件里定义如下:

由上可知,因为“<”与“>”是相反关系,所以把“>”函数里的“>”号改为“<”号就行了。实验结果如下:

…………………………………………….

6:我们来看“<=”这个运算符重载。

它在Cpp文件里定义如下:

鉴于“<=”与“>=”的关系也是相反的,故修改如同上面所示。实验结果如下:

7:我们来看“+=”这个运算符重载。

它在Cpp文件里定义如下:

让一个int型的值与时间类的秒相加,如果溢出则进位到分,实验结果如下:

8:我们来看“-=”这个运算符重载。

它在Cpp文件里定义如下:

秒相减,如果不够则借位,实验结果如下所示:

至此,所有运算符重载操作解说完成,下面附上总的实验结果截图:

总结:

此次实验充分让我理解了运算符重载的含义,并且锻炼了我对C文件的管理能力,可能代码有需要简化的地方,希望能与老师多多交流。也希望以后能多一点这样的实验。

相关文档
最新文档