C++类实践——时间类
2016-06-23 22:22
399 查看
<pre name="code" class="html">#pragma once #ifndef TIME_H #define TIME_H class Time { public: Time() :hour(0), minute(0), sec(0) {}; Time(int h, int m, int s) :hour(h), minute(m), sec(s) {}; void show_time(); //显示时间 void add_a_sec(); //增加一秒钟 void add_a_minute(); //增加一分钟 void add_an_hour(); //增加一小时 void add_secs(int); //增加n秒钟 void add_minutes(int); //增加n分钟 void add_hours(int); //增加n小时 private: int hour, minute, sec; bool is_time(); //判断时间是否合法 }; #endif // !TIME_H
#include<iostream> #include"time.h" using namespace std; bool Time::is_time() { if (hour < 0 || hour>23 || minute < 0 || minute>59 || dec < 0 || sec>59) return false; return true; } void Time::show_time() { if (is_time()) cout << hour << ":" << minute << ":" << sec << endl; else cout << "时间非法" << endl; } void Time::add_a_sec() { ++sec; if (sec == 60) { sec = 0; add_a_minute(); } } void Time::add_a_minute() { ++minute; if (minute == 60) { minute = 0; add_an_hour(); } } void Time::add_an_hour() { ++hour; if (hour == 24) hour = 0; } void Time::add_secs(int n) { for (int i = 0; i != n; ++i) add_a_sec(); } void Time::add_minutes(int n) { for (int i = 0; i != n; ++i) add_a_minute(); } void Time::add_hours(int n) { for (int i = 0; i != n; ++i) add_an_hour(); }
add_a_sec() ,add_a_minute(),add_an_hour()三个函数十分简单,作为普通函数调用时将浪费计算机资源,可以修改为:直接定义在类内或者加inline。 inline 定义的类的内联函数,函数的代码被放入符号表中,在使用时直接进行替换,(像宏一样展开),没有了调用的开销,效率也很高。
上述代码中,增加n秒,n分钟,n小时的函数中,采用for循环,增加了时间开销,作如下修改:
#pragma once #ifndef TIME_H #define TIME_H class Time { public: Time() :hour(0), minute(0), sec(0) {}; Time(int h, int m, int s) :hour(h), minute(m), sec(s) {}; void show_time(); //显示时间 inline void add_a_sec(); //增加一秒钟 inline void add_a_minute(); //增加一分钟 inline void add_an_hour(); //增加一小时 void add_secs(int); //增加n秒钟 void add_minutes(int); //增加n分钟 void add_hours(int); //增加n小时 private: int hour, minute, sec; bool is_time(); //判断时间是否合法 }; #endif // !TIME_H
#include<iostream> #include"time.h" using namespace std; bool Time::is_time() { if (hour < 0 || hour>23 || minute < 0 || minute>59 || dec < 0 || sec>59) return false; return true; } void Time::show_time() { if (is_time()) cout << hour << ":" << minute << ":" << sec << endl; else cout << "时间非法" << endl; } inline void Time::add_a_sec() { ++sec; if (sec == 60) { sec = 0; add_a_minute(); } } inline void Time::add_a_minute() { ++minute; if (minute == 60) { minute = 0; add_an_hour(); } } inline void Time::add_an_hour() { ++hour; if (hour == 24) hour = 0; } void Time::add_secs(int n) { sec += n; if (sec > 59) { add_minutes(sec/60); sec %= 60; } } void Time::add_minutes(int n) { minute += n; if (minute > 59) { add_hours(minute / 60); minute %= 60; } } void Time::add_hours(int n) { hour += n; if (hour > 23) hour %= 25; }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性