C++筆記 第二十六課 類的靜態成員函式---狄泰學院
阿新 • • 發佈:2018-11-07
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。
學習C++編譯環境:Linux
第二十六課 類的靜態成員函式
1.未完成的需求
統計在程式執行期間某個類的物件數目
保證程式的安全性(不能使用全域性變數)
隨時可以獲取當前物件的數目(Failure)
26-1 解決方案的嘗試
#include <stdio.h> class Test { public: static int cCount; public: Test() { cCount++; } ~Test() { --cCount; } int getCount() { return cCount; } }; int Test::cCount = 0; int main() { printf("count = %d\n", Test::cCount); Test::cCount = 1000; printf("count = %d\n", Test::cCount); return 0; }
2.問題分析
我們需要什麼?
不依賴物件就可以訪問靜態成員變數
必須保證靜態成員變數的安全性
方便快捷的獲取靜態成員變數的值
3.靜態成員函式
在C++中可以定義靜態成員函式
靜態成員函式是類中特殊的成員函式
靜態成員函式屬於整個類所有
可以通過類名直接訪問公有靜態成員函式
可以通過物件名訪問公有靜態成員函式
靜態成員函式的定義
直接通過static關鍵字修飾成員函式
26-2 靜態成員函式示例
靜態成員函式VS普通成員函式
26-3 最後的解決方案
#include <stdio.h> class Test { private: static int cCount; public: Test() { cCount++; } ~Test() { --cCount; } static int GetCount() { return cCount; } }; int Test::cCount = 0; int main() { printf("count = %d\n", Test::GetCount()); Test t1; Test t2; printf("count = %d\n", t1.GetCount()); printf("count = %d\n", t2.GetCount()); Test* pt = new Test(); printf("count = %d\n", pt->GetCount()); delete pt; printf("count = %d\n", Test::GetCount()); return 0; }
小結
靜態成員函式是類中特殊的成員函式
靜態成員函式沒有隱藏的this引數
靜態成員函式可以通過類名直接訪問
靜態成員函式只能直接訪問靜態成員變數(函式)