首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ static 類成員詳解:定義、初始化、訪問與優勢

     編輯:關於C++

什麼是 static 類成員

屬於類本身而非某個對象。靜態數據成員在所有對象間共享一份;靜態成員函數無 this 指針,只能訪問靜態成員。

優勢

  1. 名字在類作用域,避免全局命名衝突。
  2. 可實施封裝(private static)。
  3. 語義清晰:明確屬於該類。

聲明與定義


class A {
public:
    static int getVal() { return value; }
    static void setVal(int v) { value = v; }
private:
    static int value; // 僅聲明
};
int A::value = 0; // 類外定義並初始化(必須)

訪問方式


A obj; A* p = &obj;
obj.getVal(); p->getVal(); A::getVal(); // 均可

特殊:const static 整型

可在類內初始化:static const int MAX = 100;。但仍需在類外定義(不初始化):const int A::MAX;。

static vs 非 static

非 static 數據成員每個對象一份;static 數據成員全程只有一份。static 成員類型可以是本類類型(如單例模式),非 static 不能(會無限遞歸)。

mutable 成員補充

mutable 允許在 const 成員函數中修改該數據成員,常用於緩存、鎖等邏輯可變但語義不可變的場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved