《C++菜鸟进化论》

#include<iostream>
#include<fstream>
#include<cmath>

using namespace std;

class Timer
{
private:
 int minute;
 int second;
public:
 Timer(int m = 0,int s = 0);
 Timer(const Timer &t);
 int get_minute() const;
 int get_second() const;
 Timer& operator++();
 Timer operator++(int);
 friend Timer operator - (const Timer &lhs,const Timer &rhs);
 friend void write(const Timer &t, ofstream &os);
 friend ostream& operator<<(ostream& os, const Timer &t);
};

Timer::Timer(int m, int s) :
minute((m >= 0 && m <= 59) ? m : 0),
second((s >= 0 && m <= 59) ? s : 0)
{

}

Timer::Timer(const Timer &t) : minute(t.minute), second(t.second)
{

}

int Timer::get_minute() const
{
 return minute;
}

int Timer::get_second() const
{
 return second;
}

//前自增运算符++重载。注意:先增加秒 second 值,如果超过 59,秒值清零,分钟加 1;

//如果分 钟值超过 59,分钟值清零

Timer& Timer::operator++()
{
 ++second;
 if (second > 59)
 {
  second = 0;
  ++minute;
 }
 if (minute > 59)
 {
  minute = 0;

}
 return *this;
}

Timer Timer::operator++(int)
{
 Timer oldTimer(*this);
 ++(*this);
 return oldTimer;
}

//重载减法运算符-,实现两个 Timer 相减,得到它们的时间差,时间差也是一个 Timer 对象

Timer operator-(const Timer &lhs, const Timer &rhs)
{
 int s = lhs.minute * 60 + lhs.second;
 int t = rhs.minute * 60 + rhs.second;
 int diff = abs(s - t);                  //绝对值操作abs()函数
 return Timer(diff / 60, diff % 60);
}

//写一个友元函数 write(Timer &c, ofstream &os),将一个计时器对象写入到一个文件中

//包括计时器的分钟和秒值,中间用“:”隔开。一个计时器的信息占 1 行。

void write(const Timer &t, ofstream &os)
{
 os << t.minute << ":" << t.second << endl;
}

//流输出运算,用于显示计时器的分钟和秒值,中间用“:”隔开。一个计时器的信息占 1 行。

ostream& operator<<(ostream& os, const Timer &t)
{
 os << t.minute << ":" << t.second << endl;
 return os;
}

int main()
{
 ofstream os("Timer.txt");
 Timer t1, t2(20, 59), t3(t2);
 cout<<t1 << t2 << t3;
 Timer* t4 = new Timer(2, 49);
 cout << t4->get_minute() << t4->get_second() << endl;
 delete t4;
 ++t1;
 cout << ++t1;
 t3++;
 cout << t3++;
 Timer t5 = t1 - t3;
 cout << t5;
 write(t1, os);
 write(t2, os);
 write(t3, os);
 write(t5, os);
 os.close();
 system("pause");
 return 0;
}

C++:Timer类实现相关推荐

  1. 63、使用Timer类来实现定时任务

    定时任务 定时任务就是让计算机自动的每隔一段时间执行的代码. 比如要实现这样的一个功能: 让计算机每隔5秒钟,在控制台打印一个www.monkey1024.com 可以使用java.util包下的Ti ...

  2. 关于C#中timer类 在C#里关于定时器类就有3个

    ·关于C#中timer类  在C#里关于定时器类就有3个   1.定义在System.Windows.Forms里   2.定义在System.Threading.Timer类里   3.定义在Sys ...

  3. System.Threading.Timer类的TimerCallback 委托

    System.Threading.Timer类的TimerCallback 委托 Written by: Rickie Lee Nov. 19, 2004 System.Threading.Timer ...

  4. [ImportNew]Java中的Timer类和TimerTask类

    http://www.importnew.com/9978.html java.util.Timer是一个实用工具类,该类用来调度一个线程,使它可以在将来某一时刻执行. Java的Timer类可以调度 ...

  5. C#中timer类的用法

    C#中timer类的用法 关于C#中timer类  在C#里关于定时器类就有3个   1.定义在System.Windows.Forms里   2.定义在System.Threading.Timer类 ...

  6. java中timer类包_Java~util包中Timer的使用, 演示cancel方法 和 对比schedule和scheduleAtFixedRate方法...

    Timer Timer类的主要作用就是设置计划任务,但封装任务的类却是TimerTask类 执行计划任务的代码要放人TimerTask的子类中,因为TimerTask是一个抽象类.而且要重写其run方 ...

  7. 使用System.Timers.Timer类实现程序定时执行

    在C#里关于定时器类有3个:System.Windows.Forms.Timer类.System.Threading.Timer类和System.Timers.Timer类. System.Windo ...

  8. Timer类 和 TimerTask类。一种有用计时器工具。可以每隔相同时间去执行某任务一次。

    1,编写一个类 继承TimerTask类 public class MyTimerTask extends TimerTask {@Overridepublic void run() {System. ...

  9. 关于C#中timer类

    关于C#中timer类  在C#里关于定时器类就有3个   1.定义在System.Windows.Forms里   2.定义在System.Threading.Timer类里   /?" ...

  10. JDK自带的Timer类

    Timer类负责设定TimerTask的起始和间隔执行时间.具体的执行任务,由用户创建一个TimerTask的继承类,并实现其run()方法 timer.schedule() 转载于:https:// ...

最新文章

  1. [python教程入门学习]Python标准库映射类型与可散列数据类型的关系
  2. mysql 让别人连接我的数据库
  3. flask-blueprint的简单使用
  4. 设计模式总结 (3)创建内存型模式
  5. WPF——自动关闭无模式窗口
  6. Wannafly挑战赛27: C. 蓝魔法师(树形DP)
  7. 微信小程序分享至朋友圈功能
  8. java-redis java使用redisTemplate连接操作单台Redis
  9. 浅析企业应收账款保理融资
  10. Ubuntu20.04英文系统无法安装中文智能拼音输入法
  11. 2021年,手机拼什么?
  12. iOS的常用运算函数
  13. jquery给id加css,JQuery为元素添加样式
  14. Legacy octal literals are not allowed in strict mode 严格模式下禁止使用 八进制
  15. 一区希尔盖服务器找不到,怀旧服克罗米服务器关闭转入 龙牙即将满载
  16. C# + Ext.Net打印
  17. java如何连接Sublime_第一节:使用Sublime 搭建Java学习环境
  18. [附源码]计算机毕业设计springboot海滨学院学生大创项目申报与审批系统
  19. 华秋亮相汽车电子研讨会,展出智能座舱方案、高可靠PCB板
  20. 云计算机上存储的文件能删除吗,如何删除wps云文档文件 本地电脑如何关闭wps云文档-♚付涛纪实阁♚...

热门文章

  1. F5 GTM DNS 知识点和实验 6 -智能DNS算法
  2. FFmpeg —— ffplay源码 - 制作桌面动态壁纸
  3. 用自己写的六爻装卦程序了占卜一下 2010 年
  4. 数字中国城市巡礼之杭州,让城市长出“神经系统”
  5. 【C语言经典100例】-- 11 不死神兔问题
  6. MAC系统中快速切换输入法的方法
  7. 第53天-代码审计-TP5 框架及无框架变量覆盖反序列化(待续)
  8. 小学生必积累的名人名言汇总100条
  9. Python 利用win32com批量给excel加密
  10. mhl数据线_mhl接口有什么作用