zoukankan      html  css  js  c++  java
  • 类的静态成员变量的声明与初始化问题总结

    类的静态成员变量的声明与初始化问题总结

    1. 类的静态成员变量的声明原则:

      在.H文件中,用static 关键字进行前缀修饰即可,不可以直接进行初始化,基础变量除外。

      如果要初始化自定义的类型,则需要在CPP文件中进行初始化

      static CPerson* Police;

     1 //定义状态环境类
     2 /*
     3 环境状态类:
     4 1. 封装状态静态常量
     5 2. 聚合状态
     6 3. 提供上层接口
     7 */
     8 class CStateContex : public CIState
     9 {
    10 public:
    11     CStateContex(CAbsState* pState = nullptr)
    12     {
    13         if (!pState)
    14             pState = _STATE_OPEN_;//默认门打开状态
    15         m_pState = pState;//无默认值行为
    16     }
    17     ~CStateContex()
    18     {
    19         //类的静态成员的堆分配是和类一起进行销毁的
    20     }
    21 public:
    22     void openDoor() override
    23     {
    24         cout << "...不响应..." << endl;
    25     }
    26     void closeDoor() override
    27     {
    28         cout << "...不响应..." << endl;
    29     }
    30     void moveRunning() override
    31     {
    32         cout << "...不响应..." << endl;
    33     }
    34     void stopRunning() override
    35     {
    36         cout << "...不响应..." << endl;
    37     }
    38     CAbsState* getState()
    39     {
    40         return m_pState;
    41     }
    42     //修改当前状态的,要更新被修改状态当前的环境对象,因为环境类中的状态对象中的环境属性需要及时更新
    43     void setState(CAbsState* p)
    44     {
    45         m_pState = p;
    46         m_pState->setContex(this);
    47     }
    48 public:
    49     static CAbsState* _STATE_OPEN_;
    50     static CAbsState* _STATE_CLOSE;
    51     static CAbsState* _STATE_RUN;
    52     static CAbsState* _STATE_STOP;
    53 private:
    54     CAbsState* m_pState;
    55 
    56 };

    2.类的静态成员变量初始化原则:

      在CPP文件中进行初始化,且格式如下:

      类型 所在类::静态变量名 = 初始化值。

    1 #include "StateDef.h"
    2 
    3 //类的静态成员的初始化,不能再类的声明中进行
    4 CAbsState* CStateContex::_STATE_OPEN_ = new CStateOpenning();
    5 CAbsState* CStateContex::_STATE_CLOSE = new CStateClosing();
    6 CAbsState* CStateContex::_STATE_RUN = new CStateRunning();
    7 CAbsState* CStateContex::_STATE_STOP = new CStateStopping();
  • 相关阅读:
    Jam的计数法
    你已经爱我多久了
    脏话过滤
    三角恋
    栈练习3
    栈练习2
    栈练习
    高精度之乘法
    高精度之减法
    高精度之加法
  • 原文地址:https://www.cnblogs.com/icmzn/p/5668862.html
Copyright © 2011-2022 走看看