2.0 C++远征:静态

静态

[TOC]

二、静态

关键字:static

“静态”使用场景:用作全局的。

1.静态数据成员

依赖于类,并不依赖于对象。

所开辟的内存并不在对象中。

对象声明多个,但静态数据成员只会有一份。

普通数据成员依赖于对象,对象析构则不存在。

// Tank.cpp
class Tank {
  public:
    Tank() {
      s_iCount++;
    }
    ~Tank() {
      s_iCount--;
    }
    static int getCount() {
      return s_iCount;
    }
    static int s_iCount;
  private:
    string m_strCode;
};
int Tank::s_iCount = 0; // 初始化

// main.cpp
int main() {
  // 通过类的访问方法
  cout << Tank::getCount() << endl;
  cout << Tank::s_iCount << endl;
  
  // 通过对象的访问方法
  Tank tank;
  cout << tank.getCount() << endl;
  cout << tank.s_iCount << endl;
}

2.静态成员函数

3.静态使用注意事项

  • 静态数据成员必须单独初始化;
  • 静态成员函数不能调用非静态成员函数和非静态数据成员;
  • 静态数据成员只有一份,且不依赖对象而存在;
  • 静态成员函数上不允许修饰符。

你可能感兴趣的:(2.0 C++远征:静态)