C++ ~ Time类实例研究

来源:互联网 发布:c语言输出1到100的素数 编辑:程序博客网 时间:2024/06/05 18:24

Time类的定义:

    类中的定义包含成员函数Time、setTime、printUniversal、printStandard的函数原型,以及private unsigned int成员hour、minute、second。只能通过Time类的成员函数访问它的private数据成员。

下面的例子是我的简单Time类演示代码:

time.h文件

#ifndef __TIME_H__#define __TIME_H__class Time{public:Time();void setTime(int, int, int);void printUniversal() const;void printfStandard() const;private:unsigned int hour;unsigned int minute;unsigned int second;};#endif

time.cpp文件:

#include<iostream>#include<string>#include<iomanip>#include<stdexcept>#include"time.h"using namespace std;Time::Time():hour(0), minute(0), second(0){}void Time::setTime(int h, int m, int s){if ((h >= 0 && h < 24) && (m >= 0 && m < 60) && (s >= 0 && s < 60)){hour = h;minute = m;second = s;}else{throw invalid_argument("number out of range");}}void Time::printUniversal()const{cout << setfill('0') << setw(2) << hour << ":" << setw(2)    //setfill指定输出宽域大于输出整数值所需的填充字符<< minute << ":"<<setw(2) << second;                 //setw控制输出宽域,对紧接显示的值起作用(注意包含头文件<iomanip>)}void Time:: printfStandard() const{cout << ((hour == 0 || hour == 12) ? 12 : hour % 12) << ":"<< setfill('0') << setw(2) << hour << ":" << setw(2) << minute<< ":" << setw(2) << second << (hour < 12 ? "AM" : "PM");} 

test.cpp文件:

#include<iostream>#include<string>#include<iomanip>#include<stdexcept>#include"time.h"using namespace std;int main(){Time t;cout << "the init time is: ";t.printUniversal();cout << "\nthe time is: ";t.printfStandard();t.setTime(15, 12, 50);cout << "\n\nthe init time is: ";t.printUniversal();cout << "\nthe time is: ";t.printfStandard();cout << endl;try{t.setTime(50, 12, 50);}catch (invalid_argument &e){cout << "\nException: " << e.what() << endl;}cout << endl;return 0;}
运行结果: