類別中宣告為 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 */ |
count 為 static 的資料成員
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 ...
沒有留言:
張貼留言