C++靜態成員的用法

在C++中,靜態成員是屬於整個類的而不是某個對象,靜態成員變量只存儲一份供所有對象共用。所以在所有對象中都可以共享它。於是就可以通過類名直接訪問靜態成員,即

Class::member,但是不能通過類名訪問非靜態成員,因爲非靜態成員是屬於對象的,只有實例化後才能使用。這樣就有

1)靜態成員函數可用過類名訪問,但不能通過類名來調用類的非靜態成員函數

如果通過對象,則

2)靜態和非靜態成員都可通過對象訪問

之前的遊戲中,我在Food靜態類中加了一個非靜態成員Color,此時編譯器就報錯,“錯誤:在靜態成員函數中使用成員‘Food::color’無效”,所以

3)在靜態類中不能引用非靜態成員,即每個靜態成員函數都不能引用非靜態成員。

靜態成員是對立與對象存在,所以在沒有對象的時候也可通過類名引用,但是需要通過Food* Food::instance = 0初始化後才能使用。

4)靜態成員先初始化才能使用

另外還有

5)非靜態成員函數可以調用靜態和非靜態成員

這些基本就是靜態類的使用規則,嚴格遵守避免錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章