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

C++ static 類成員深度解析:定義、用法、優勢與區別

     編輯:關於C語言

適用場景

  • 統計類實例化對象數量
  • 共享錯誤處理策略/配置參數
  • 銀行利率等全體對象共同屬性

用全局變量破壞封裝;static 類成員屬於類、為全體對象共享、不屬於單個對象。

分類與聲明

class Account {
    static double interestRate;  // static 數據成員
    static void setRate(double); // static 成員函數
    // ...
};
// 類外定義(必須)
double Account::interestRate = 0.03;
void Account::setRate(double r) { interestRate = r; }

訪問方式

Account::rate();           // 類名::成員(推薦)
Account a; a.rate();       // 對象.成員
Account* p = &a; p->rate(); // 指針->成員
Account& r = a; r.rate();   // 引用.成員

static 成員函數特性

  • 無 this 指針:不能訪問非 static 成員
  • 可直接訪問 static 數據成員、其他 static 成員函數
  • 可聲明為 const/volatile(但無 this,實際無意義)

優勢總結

與普通成員對比

優勢說明
作用域封裝名稱在類作用域,避免全局命名衝突
訪問控制可 private/protected,全局變量不可
語義清晰閱讀代碼即知屬於哪個類

初始化規則

  • static 數據成員必須在類外定義並初始化(模板類除外)
  • const static 整型可在類內初始化(C++11 起任意字面類型)
  • 不在構造函數初始化列表中初始化

合理使用 static 成員,實現「類級別狀態」的封裝與共享。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
維度普通成員static 成員
歸屬對象類
存儲每個對象一份全程序一份
訪問需對象/引用/指針可直接類名訪問
this有無