第八周 项目2-Time类中的运算符
来源:互联网 发布:看外汇的软件 编辑:程序博客网 时间:2024/06/07 06:35
/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作 者:呼亚萍 * 完成日期:2015年4月25日 * 版 本 号:v1.0 * * 问题描述:实现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); 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 &t); CTime operator-(CTime &t); CTime operator+(int s);//返回s秒后的时间 CTime operator-(int s); //二目赋值运算符的重载 CTime operator+=(CTime &t); CTime operator-=(CTime &t); CTime operator+=(int s);//返回s秒后的时间 CTime operator-=(int s);};CTime::CTime(int h,int m,int s){ hour=h; minute=m; second=s;}void CTime::setTime(int h,int m,int s){ hour=h; minute=m; second=s;}bool CTime::operator>(CTime &t){ if(hour>t.hour)return true; if(hour<t.hour)return false; if(minute>t.minute)return true; if(minute<t.minute)return false; if(second>t.second)return true; if(second<t.second)return false;}bool CTime::operator<(CTime &t){ if(hour<t.hour)return true; if(hour>t.hour)return false; if(minute<t.minute)return true; if(minute>t.minute)return false; if(second<t.second)return true; if(second>t.second)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(*this<t)//可以直接使用重载了的运算实现新运算 return false; else return true;}bool CTime::operator<=(CTime &t){ if(*this>t)//可以直接使用重载了的运算实现新运算 return false; else return true;}bool CTime::operator!=(CTime &t){ if(*this==t)//可以直接使用重载了的运算实现新运算 return false; else return true;}CTime CTime::operator+(CTime &t){ CTime c; c.hour=hour+t.hour; c.minute=minute+t.minute; c.second=second+t.second; if(c.second>59) { c.second=c.second%60; c.minute++; } if(c.minute>59) { c.minute=c.minute%60; c.hour++; } if(c.hour>23) { c.hour=c.hour-24; } return c;}CTime CTime::operator+(int s){ int ss=s%60; int mm=(s/60)%60;//防止分钟数大于60 int hh=(s/3600); CTime c(ss,mm,hh); return (*this+c);//this指针的简便与神奇之处}CTime CTime::operator-(CTime &t){ int h=hour-t.hour; int m=minute-t.minute; int s=second-t.second; if(s>59) { s=s%60; m++; } if(m>59) { m=m%60; h++; } if(h>23) { h=h-24; }}CTime CTime::operator-(int s){ int ss=s%60; int mm=(s/60)%60;//防止分钟数大于60 int hh=(s/3600); CTime c(ss,mm,hh); return (*this-c);}CTime CTime::operator+=(CTime &t){ *this=*this+t; return *this;}CTime CTime::operator-=(CTime &t){ *this=*this-t; return *this;}CTime CTime::operator+=(int s){ *this=*this+s; return *this;}CTime CTime::operator-=(int s){ *this=*this-s; return *this;}void CTime::display(){ cout<<hour<<":"<<minute<<":"<<second<<endl;}int main(){ CTime t1(8,20,25),t2(11,20,50),t; cout<<"t1="; t1.display(); cout<<"t2="; t2.display(); cout<<"下面比较两个时间大小:"<<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; if(t1!=t2)cout<<"t1!=t2"<<endl; cout<<endl; t=t1+t2; t=t1-t2; t=t1+2000; t=t1-5000; t1+=t2; t1-=t2; t1+=2000; t1-=5000; return 0;}
运算结果:
知识点总结:
可以直接使用重载了的运算实现新运算,善于使用this指针。
学习心得:
体会到了this指针的简便与神奇之处。
0 0
- 第八周 项目2 TIME类中的运算符重载
- 第八周 项目2 Time类中的运算符重载
- 第八周项目2-TIME类中的运算符重载
- 第八周 项目2-Time类中的运算符重载
- 第八周项目2-time类中的运算符重载
- 第八周项目2 TIME类中的运算重载符
- 第八周【项目2-Time类中的运算符重载】
- 第八周【项目2-Time类中的运算符重载】
- 第八周 项目2-Time类中的运算符
- 第八周项目2-Time类中的运算符重载
- 第八周 项目2 Time类中的运算符重载
- 第八周项目2 Time类中的运算符重载
- 第八周项目2-Time类中的运算符重载
- 第八周 【项目2-Time类中的运算符重载】
- 第八周项目2:Time类中的运算符重载
- 第八周项目2-Time类中的运算符重载
- 第八周项目-2-time类中的运算符重载
- 第八周项目2-Time类中的运算符重载
- QHeaderView 禁用某些列排序和添加QCheckBox控件
- 设计模式 笔记 命令模式 Command
- Weblogic在安装成功之后,本机可以访问,其他机器不可以访问的解决方案
- Ubuntu常用操作
- 编写C#程序 1-23
- 第八周 项目2-Time类中的运算符
- php正则表达式简明介绍
- JAVA中使用JSON进行数据传递
- ubuntu 配置Telnet服务
- noip2013小朋友的数字(dp)
- 单片机
- 【Linux】IFS是个什么鬼
- Redis缓存的设计.
- 操作系统服务:time时间模块+datetime模块