第6周项目4-静态成员应用

来源:互联网 发布:cms系统需求文档 编辑:程序博客网 时间:2024/06/06 01:36
/* *Copyright(C) 2016,计算机与控制工程学院*All rights reserved. *文件名:test.cpp *作者:张志新*完成日期:2016年4月15日*版本号:v1.0 * *问题描述:静态成员函数。*/ #include<iostream> using namespace std; class Time { public:     Time(int=0,int=0,int=0);     void show_time(); //根据is_24和from0,输出适合形式- 20:23:5/8:23:5 pm/08:23:05 pm     void add_sec(int); //增加n秒钟     void add_minute(int); //增加n分钟     void add_hour(int); //增加n小时     static void change24();  //改变静态成员is_24,在12和24时制之间转换     static void changefrom0();   //改变静态成员from0,切换是否前导0  private:     static bool is_24; //为true时,24小时制,如20:23:5;为flase,12小时制,显示为8:23:5 pm     static bool from0; //为true时,前导0,8:23:5显示为08:23:05     int hour;     int minute;     int sec; };bool Time::is_24=true;bool Time::from0=false; Time::Time(int h,int m,int s):hour(h),minute(m),sec(s) { } void Time::show_time() {     int h=(is_24)?hour:hour%12;//掌握这种写法     if(h<10&&from0)        cout<<"0";    cout<<h<<':';     if(minute<10&&from0)        cout<<"0";     cout <<minute<<':';     if(sec<10&&from0)        cout<<"0";    cout<<sec;    if(!is_24)        cout<<((hour>12)? " pm":" am");        cout<<endl; }void Time::add_sec(int n){sec+=n;if(sec>=60){minute+=sec/60;sec=sec%60;}}void Time::add_minute(int n){minute+=n;if(minute>=60){hour+=minute/60;minute=minute%60;}}void Time::add_hour(int n){hour+=n;if(hour>24){hour=hour%24;}}void Time::change24(){    is_24=!is_24;}void Time::changefrom0(){    from0=!from0;} int main( ) {     Time time1(23,14,25),time2(8,45,6);     cout<<"24时制,不前导0:"<<endl;     time1.show_time();     time2.show_time();     cout<<"10小时后,切换是否前导0:"<<endl;     time1.add_hour(10);     time2.add_hour(10);     Time::changefrom0(); //注意此处调用静态成员     time1.show_time();     time2.show_time();     cout<<"换一种制式:"<<endl;     time1.change24();     time1.show_time();     time2.show_time();    return 0; }

学习心得:

    掌握h=(is_24)?hour:hour%12这种写法,静态成员函数只要调用一次改变一次,在每个对象中都会改变。


0 0