c++第三次实验一类和对象2
2016-05-20 10:41
351 查看
一.问题及代码
静态成员应用
/* * 文件名称:c++第三次实验-类和对象2.cpp * 作 者:卢欢 * 完成日期:2016 年 5月 20日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分:静态成员应用 * 输入描述:无 * 问题描述:设计含有静态数据成员和成员函数的Time类。 * 静态数据成员是类中所有的对象共有的数据, * 在下面的设计中,时钟要采用12小时制, * 还是要使用24小时制,显示时,不足两位的数字前是否前导0, * 都是“影响全局”的设置,适合作为类中的静态数据成员。 * 程序输出:略 * 问题分析:略 * 算法设计:略 */ #include<iostream> using namespace std; class Time { public: Time(int h=0,int m=0,int s=0); void show_time( ); //根据is_24和from0,输出适合形式-20:23:5/8:23:5 pm/08:23:05 pm void add_seconds(int); //增加n秒钟 void add_minutes(int); //增加n分钟 void add_hours(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() { if(is_24&&!from0) cout<<hour<<":"<<minute<<":"<<sec<<endl; else if(is_24&&from0) { if(hour<10) cout<<"0"; cout<<hour<<":"; if(minute<10) cout<<"0"; cout<<minute<<":"; if(sec<10) cout<<"0"; cout<<sec<<endl; } else if(!is_24&&!from0) { cout<<hour%12<<":"<<minute<<":"<<sec; if(hour/12) cout<<" pm\n"; else cout<<" am\n"; } else { if(hour%12<10) cout<<"0"; cout<<hour%12<<":"; if(minute<10) cout<<"0"; cout<<minute<<":"; if(sec<10) cout<<"0"; cout<<sec; if(hour/12) cout<<" pm\n"; else cout<<" am\n"; } } void Time::add_hours(int a) { hour=(hour+a)%24; } void Time::add_minutes(int a) { minute+=(minute+a)%60; add_hours((minute+a)/60); } void Time::add_seconds(int a) { sec+=(sec+a)%60; add_minutes((sec+a)/60); } void Time::change24() { is_24=!is_24; } void Time::changefrom0() { from0=!from0; } int main( ) { Time t1(23,14,15),t2(8,45,6); cout<<"24时制,无前导:\n"; cout<<" t1是:"; t1.show_time(); cout<<" t2是:"; t2.show_time(); cout<<"10小时后,切换是否前导:"<<endl; t1.add_hours(10); t2.add_hours(10); t1.changefrom0(); cout<<" t1是:"; t1.show_time(); cout<<" t2是:"; t2.show_time(); cout<<"换一种制式:"<<endl; Time::change24(); cout<<" t1是:"; t1.show_time(); cout<<" t2是:"; t2.show_time(); return 0; }
二.运行结果
三.心得体会
四.知识点总结
静态成员是个对象共有的成员;静态变量的初始化在类外,而且只能通过静态函数改变,但是成员函数也可以访问;
静态函数的调用可以通过类来调用,也可以通过对象来调用;