C++ 速查手冊 V1.00 - 單元 9.9 - static 成員




類別中宣告為 static 的成員屬於類別,獨立於物件而存在,舉例如下


001 #include <iostream>
002
003 class Demo {
004 public:
005    Demo() {
006       std::cout << "constructor"
007                 << std::endl;
008       count++;
009    }
010
011    static int get_count() {
012       return count;
013    }
014
015 private:
016    static int count;
017 };
018
019 int Demo::count = 0;
020
021 int main() {
022    Demo d1;
023    std::cout << Demo::get_count()
024              << std::endl;
025    Demo d2;
026    std::cout << d2.get_count()
027              << std::endl;
028    Demo d3;
029    std::cout << d3.get_count()
030              << std::endl;
031
032    return 0;
033 }
034  
035 /* Kaiching Chang 
036    u0909.cpp
037    2014-02 */

countstatic 的資料成員


016 static int count;

存取宣告為 static 的資料成員得用 static 的成員函數


011 static int get_count() {
012    return count;
013 }

count 用來計算 Demo 物件建立的次數,這必須在類別定義外先初始化


019 int Demo::count = 0;

由於 get_count()static 成員函數,因此可以直接用類別名稱呼叫


023 std::cout << Demo::get_count()

編譯執行,結果如下


$ g++ u0909.cpp
$ ./a.out
constructor
1
constructor
2
constructor
3
$

continue ...

沒有留言: