C++第六次实验-项目1

项目1-静态成员应用

一、问题及代码

[cpp]  view plain  copy  
   
  在CODE上查看代码片 派生到我的代码片
  1. /*  
  2. * 文件名称:Ex6-1.cpp  
  3. * 作    者:戴光彤 
  4. * 完成日期:2017 年 5月 8日  
  5. * 版 本 号:v1.0  
  6. * 对任务及求解方法的描述部分: 
  7. * 输入描述:无  
  8. * 问题描述:


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




  9. * 程序输出:
  10. * 问题分析:略 
  11. * 算法设计:
      1. #include <iostream>  
        using namespace std;  
        class Time  
        {  
        public:  
            Time(int=0,int=0,int=0);  
            void show_time( ); //根据is_24和from0,输出适合形式的时间: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,在和时制之间转换  
            static void changefrom0();   //改变静态成员from0,转换是否前导  
        private:  
            static bool is_24; //为true时,小时制,如:23:5;为flase,小时制,显示为:23:5 pm  
            static bool from0; //为true时,前导,:23:5显示为: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_seconds(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%=24;         
        }    
          
        void Time::change24()  
        {  
            is_24=!is_24;  
        }  
        void Time::changefrom0()  
        {  
            from0=!from0;  
        }  
          
        int main( )     
        {  
            Time t1(23,14,25),t2(8,45,6);   
            cout<<"24时制, 不前导:"<<endl;  
            cout<<"    t1是:";  
            t1.show_time();  
            cout<<"    t2是:";  
            t2.show_time();  
            t1.add_hours(10);  
            t2.add_hours(10);  
            Time::changefrom0();   
            cout<<"10小时后, 切换是否前导:"<<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();  
            return 0;  
        }  

二、运行结果:


三、心得体会:

     

     声明为static的类成员或者成员函数便能在类的范围内共同享,我们把这样的成员称做静态成员和静态成员函数。

在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括数据成员和成员函数)。

四、知识点总结:

     普通数据成员属于类的一个具体的对象,只有对象被创建了,普通数据成员才会被分配内存。而静态数据成员属于整个类,即使没有任何对象创建,类的静态数据成员变量也存在。

  

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值