《第八周实验报告任务2》
2012-04-07 23:45
429 查看
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: Time类中的重载运算
* 作 者: 刘江波
* 完成日期: 2012 年 04 月 07 日
* 版 本 号: v.04072
* 对任务及求解方法的描述部分
* 问题描述: 实现Time类中的运算符重载
* 程序头部的注释结束
*/
知识点总结:
在自增运算符重载中,增加一个int型形参,就是后置自增运算符函数。
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称: Time类中的重载运算
* 作 者: 刘江波
* 完成日期: 2012 年 04 月 07 日
* 版 本 号: v.04072
* 对任务及求解方法的描述部分
* 问题描述: 实现Time类中的运算符重载
* 程序头部的注释结束
*/
#include <iostream> using namespace std; class CTime { private: unsigned short int hour; // 时 unsigned short int minute; // 分 unsigned short int second; // 秒 public: CTime(int h = 0, int m = 0, int s = 0):hour(h), minute(m), second(s){ } void setTime(int h, int m, int s); void display(); //比较运算符(二目)的重载 bool operator > (CTime &t); bool operator < (CTime &t); bool operator >= (CTime &t); bool operator <= (CTime &t); bool operator == (CTime &t); bool operator != (CTime &t); //二目运算符的重载 CTime operator + (CTime &c);//返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15 CTime operator - (CTime &c);//对照+理解 CTime operator + (int s);//返回s秒后的时间 CTime operator - (int s);//返回s秒前的时间 //一目运算符的重载 CTime operator ++ (int);//后置++,下一秒 CTime operator ++ ();//前置++,下一秒 CTime operator -- (int);//后置--,前一秒 CTime operator -- ();//前置--,前一秒 //赋值运算符的重载 CTime operator += (CTime &c); CTime operator -= (CTime &c); CTime operator += (int s);//返回s秒后的时间 CTime operator -= (int s);//返回s秒前的时间 }; //下面实现所有的运算符重载代码。 //为简化编程,请注意通过调用已有函数,利用好各函数之间的关系 void CTime::setTime(int h, int m, int s) { hour = h; minute = m; second = s; } void CTime::display() { cout << hour << ":" << minute << ":" << second << endl; } bool CTime::operator > (CTime &t)//转换为秒,在进行比较。 { if(hour * 3600 + minute * 60 + second > t.hour * 3600 + t.minute * 60 + t.second) { return true; } else { return false; } } bool CTime::operator < (CTime &t) { if(hour * 3600 + minute * 60 + second < t.hour * 3600 + t.minute * 60 + t.second) { return true; } else { return false; } } bool CTime::operator >= (CTime &t) { if(hour * 3600 + minute * 60 + second >= t.hour * 3600 + t.minute * 60 + t.second) { return true; } else { return false; } } bool CTime::operator <= (CTime &t) { if(hour * 3600 + minute * 60 + second <= t.hour * 3600 + t.minute * 60 + t.second) { return true; } else { return false; } } bool CTime::operator == (CTime &t)//小时,分钟,秒数都相同 { if(hour == t.hour && minute == t.minute && second == t.second) { return true; } else { return false; } } bool CTime::operator != (CTime &t)//小时,分钟,秒数有一个不同即可 { if(hour != t.hour || minute != t.minute || second != t.second) { return true; } else { return false; } } CTime CTime::operator + (CTime &c) { CTime c2; int time; //现将两个时间转化为秒,再依次求出小时,分,秒即可。 time = (hour * 3600 + minute * 60 + second) + (c.hour * 3600 + c.minute * 60 + c.second); c2.hour = time / 3600; time = time % 3600; c2.minute = time / 60; time = time % 60; c2.second = time; return c2; } CTime CTime::operator - (CTime &c) { CTime c2; int time; //现将两个时间转化为秒,再依次求出小时,分,秒即可。 time = (hour * 3600 + minute * 60 + second) - (c.hour * 3600 + c.minute * 60 + c.second); c2.hour = time / 3600; time = time % 3600; c2.minute = time / 60; time = time % 60; c2.second = time; return c2; } CTime CTime::operator + (int s) { int time; time = hour * 3600 + minute * 60 + second + s; hour = time / 3600; time = time % 3600; minute = time / 60; time = time % 60; second = time; return (*this); } CTime CTime::operator - (int s) { int time; time = hour * 3600 + minute * 60 + second; time = time - s; hour = time / 3600; time = time % 3600; minute = time / 60; time = time % 60; second = time; return (*this); } CTime CTime::operator ++ (int) //后置 { CTime temp = (*this); int time; time = hour * 3600 + minute * 60 + second + 1; hour = time / 3600; time = time % 3600; minute = time / 60; time = time % 60; second = time; return temp;//返回自加前的对象 } CTime CTime::operator ++ ()//前置 { int time; time = hour * 3600 + minute * 60 + second +1; hour = time / 3600; time = time % 3600; minute = time / 60; time = time % 60; second = time; return (*this);//返回自加后的当前对象 } CTime CTime::operator -- (int)//后置 { CTime temp = (*this); int time; time = hour * 3600 + minute * 60 + second - 1; hour = time / 3600; time = time % 3600; minute = time / 60; time = time % 60; second = time; return temp;//返回自减前的对象 } CTime CTime::operator -- ()//前置 { int time; time = hour * 3600 + minute * 60 + second - 1; hour = time / 3600; time = time % 3600; minute = time / 60; time = time % 60; second = time; return (*this);//返回自减后的当前对象 } CTime CTime::operator += (CTime &c) { CTime c2; c2 = (*this) + c;//调用重载运算符,第一个+号 return c2; } CTime CTime::operator -= (CTime &c) { CTime c2; c2 = (*this) - c;//调用重载运算符,第一个-号 return c2; } CTime CTime::operator += (int s) { CTime c2; c2 = (*this) + s;//调用重载运算符,第2个+号 return c2; } CTime CTime::operator -= (int s) { CTime c2; c2 = (*this) - s;//调用重载运算符,第2个-号 return c2; } void main() { CTime t1(8,20,25), t2(11,20,50), t; cout << "t1为:"; t1.display(); cout << "t2为:"; t2.display(); cout << "下面比较两个时间大小:\n" ; if (t1 > t2) cout << "t1 > t2" << endl; if (t1 < t2) cout << "t1 < t2" <<endl; if (t1 == t2) cout <<"t1 = t2" <<endl; if (t1 != t2) cout << "t1 ≠ t2" << endl; if (t1 >= t2) cout << "t1 ≥ t2" << endl; if (t1 <= t2) cout << "t1 ≤ t2" << endl; cout<<endl; t = t1 + t2; cout << "t1 + t2 ="; t.display(); t = t2 - t1; cout << "t2 - t1 ="; t.display(); t = t1; t = t + 40; cout << "t1 + 40s ="; t.display(); t = t2; t = t - 10; cout << "t2 - 10s ="; t.display(); t = t1++; cout << "t1++ ="; t.display(); t = --t2; cout << "--t2 ="; t.display(); t = t1; t += t2; cout << "t1 += t2 , t1 = "; t.display(); t = t2; t -= 5; cout << "t2 -= 5, t2 = "; t.display(); system("pause"); }
知识点总结:
在自增运算符重载中,增加一个int型形参,就是后置自增运算符函数。
相关文章推荐
- 第八周实验报告(任务二)【Time类中运算符的重载】
- 《第八周实验报告任务1》
- 第八周实验报告任务1 实现复数类中的运算符重载
- 第八周实验报告 任务三
- 第八周实验报告任务3 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除,求反,比较6种关系的运算。
- 第八周实验报告(任务2)
- 第八周实验报告 任务三(改)
- 第八周实验报告(任务三)【分数的加减乘除】
- 第八周实验报告(任务3)
- 第八周实验报告任务2 实现Time类中的运算符重载
- 第八周实验报告 任务二(改)
- 第八周实验报告 任务四(改)
- C++程序设计实验报告(五十一)---第八周任务1-1
- 第八周实验报告(任务1-方案1)
- 第八周实验报告任务4 实现分数类中的运算符重载,分数类中的对象可以和整数型进行四则运算,且运算符合交换律。
- C++程序设计实验报告(五十二)---第八周任务1-2
- 《第八周实验报告任务3》
- 第八周实验报告(任务1-方案2)
- C++程序设计实验报告(五十三)---第八周任务1-3
- C++程序设计实验报告(五十四)---第八周任务二