您的位置:首页 > 编程语言 > C语言/C++

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++