C++static成員的使用

一、static 成員變量

對於特定類型的全體對象而言,有時候可能需要訪問一個全局的變量。比如說統計某種類型對象已創建的數量。
如果我們用全局變量會破壞數據的封裝,一般的用戶代碼都可以修改這個全局變量,這時可以用類的靜態成員來解決這個問題。
非static數據成員存在於類類型的每個對象中,static數據成員獨立該類的任意對象存在,它是與類關聯的對象,不與類對象關聯。

(1)、static成員的定義

static成員需要在類定義體外進行初始化與定義

(2)、特殊的整型static const成員

整型static const成員可以在類定義體中初始化,該成員可以不在類體外進行定義

static成員變量不能在構造函數初始化列表中初始化,因爲它不屬於某個對象

(3)、static成員優點:

static成員的名字是在類的作用域中,因此可以避免與其它類成員或全局對象名字衝突。

可以實施封裝,static成員可以是私有的,而全局對象不可以

閱讀程序容易看出static成員與某個類相關聯,這種可見性可以清晰地反映程序員的意圖

二、static 成員函數

static成員函數沒有隱含的this指針
非靜態成員函數可以訪問靜態成員
靜態成員函數不可以訪問非靜態成員(實際上是直接訪問是不可以的,間接地訪問是可以的,比如通過類指針或類引用)

三、類/對象大小計算

類大小計算遵循前面學過的結構體對齊原則
類的大小與數據成員有關與成員函數無關(空類大小爲1個字節)
類的大小與靜態數據成員無關
虛函數對類的大小的影響
虛繼承對類的大小的影響


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