C++实验3-类和对象2

来源:互联网 发布:淘宝白底图片的作用 编辑:程序博客网 时间:2024/05/16 14:24

一、问题及代码

/*   * 文件名称:静态成员类   * 作    者:尚超    * 完成日期:2016年4月8日   * 版 本 号:v1.0   * 对任务及求解方法的描述部分:  * 输入描述:    * 问题描述:设计含有静态数据成员和成员函数的Time类* 程序输出: 略  * 问题分析: 略  * 算法设计: 略  */  
#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_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;  };   Time::Time(int h, int m, int s)  {      hour = h, minute = m, sec = s;  }  bool Time::is_24 = true;  bool Time::from0 = false;  void Time::show_time( )  {      if (is_24)      {          if (from0)          {              cout << (hour < 10 ? "0":"") << hour << ':'                  << (minute < 10 ? "0":"") << minute << ':' << (sec < 10 ? "0":"") << sec << endl;          }          else          {              cout << hour << ':' << minute << ':' << sec << endl;          }      }      else      {          if (from0)          {              cout << (hour < 10||(hour - 12 >=0 && hour - 12 < 10) ? "0":"") << (hour > 12 ? hour-12 : hour) << ':' << (minute < 10 ? "0":"") << minute << ':' << (sec < 10 ? "0":"") << sec << ' '  << (hour > 11 ? "pm" : "am") << endl;          }          else          {              cout << (hour > 12 ? hour-12 : hour) << ':'<< minute<< ':' << sec << ' ' << (hour > 11 ? "pm" : "am") << endl;          }      }  }  void Time::add_seconds(int s)    {        s = sec + s;        sec = s % 60;            add_minutes(s / 60);    }    void Time::add_minutes(int m)    {        m = minute + m;        minute = m % 60;            add_hours(m / 60);    }    void Time::add_hours(int h)    {        h = hour + h;        hour = h % 24;    }    void Time::change24()  {      is_24 = !is_24;      if (is_24) cout << "已切换为24小时制。" << endl;      else cout << "已切换为12小时制。" << endl;  }  void Time::changefrom0()  {      from0 = !from0;      if (from0) cout << "已切换为前导0输出。" << endl;      else cout << "已切换为非前导0输出。" << endl;  }  int main( )     {      Time t1(23, 14, 25), t2(8, 45, 6);      cout << "24时制, 不前导0:" << endl;      cout << "    t1是:";      t1.show_time();      cout << "    t2是:";      t2.show_time();      t1.add_hours(10);      t2.add_hours(10);      Time::changefrom0();      cout << "10小时后, 切换是否前导0:" << endl;      cout << "    t1是:";      t1.show_time();      cout << "    t2是:";      t2.show_time();      t1.change24();      cout << "换一种制式:" << endl;      cout << "    t1是:";      t1.show_time();      cout << "    t2是:";      t2.show_time();      system("pause");      return 0;  }  

二、运行结果


三、心得体会

设计含有静态数据成员和成员函数的Time类。静态数据成员是类中所有的对象共有的数据,时钟要采用12小时制,还是要使用24小时制,显示时,不足两位的数字前是否前导0,都是“影响全局”的设置,适合作为类中的静态数据成员。 
四、知识点总结

静态成员函数不可以调用类的非静态成员。因为静态成员函数不含this指针。静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。 其定义方式与全局变量相同。静态数据成员被 类 的所有对象所共享,包括该类派生类的对象。静态数据成员可以成为成员函数的可选参数,而普通数据成员则不可以。静态成员是可以独立访问的,也就是说,无须创建任何对象实例就可以访问

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 春季脸上起皮怎么办 手上起白皮屑怎么办 手背起皮干燥怎么办 不会读的英语怎么办 中学生不准时回家怎么办 汽车轮胎锈住了怎么办 新轮胎不好装怎么办 学it找不到工作怎么办 血液里有微生物怎么办 机械硬盘不显示怎么办 六安建筑机械租赁公司怎么办 别墅楼梯太陡怎么办 不锈钢楼梯太陡怎么办 真皮白色鞋脏了怎么办 白色牛皮包脏了怎么办 白色羊皮鞋脏了怎么办 白色真皮染色了怎么办 白色漆皮鞋脏了怎么办 对鉴定结果不服怎么办 洗衣机入水口堵塞怎么办 华科办临时饭卡怎么办 血浆乳酸测定高怎么办 olay大红瓶过敏怎么办 饥一顿饱一顿怎么办 朝鲜人向去韩国怎么办? 我是超级大方脸怎么办 被精神病砍断四根筋怎么办 40小时不睡觉怎么办 边防转业军人安置不好怎么办 转业军人孩子读书怎么办玉环 军官证丢了怎么办 飞行学员停飞了怎么办 丹东港债券违约怎么办 对村党支部贿选怎么办 马自达2油耗高怎么办 马自达1.5油耗高怎么办 马自达5停产配件怎么办 期货账户休眠了怎么办 低于二本线怎么办 听力测试不过关怎么办 安装的天正过期怎么办