靜態成員資料 靜態物件初始化

2021-06-21 00:34:21 字數 1231 閱讀 4211

1.靜態成員資料的定義,與靜態型別的變數的定義方式一樣,要在成員資料的定義之前加關鍵字static。

2.靜態成員資料必須有確定的值,但由於在類的定義中不能對成員資料直接進行初始化,故必須在類定義的外部對靜態成員資料再宣告一次,並進行初始化,此時,前面不需要加關鍵字static。同時為了保持靜態成員資料取值的一致性,一般在類的建構函式中不給靜態成員資料設定初值。對靜態成員資料初始化的順序為它們在類體外宣告的順序.

3.在同乙個程式中,當乙個類有多個物件時,則這些物件中的靜態成員資料都共享同乙個儲存空間,即在定義類時,就為靜態成員資料分配儲存單元,以後建立該類的物件時,將不再為該靜態成員資料分配儲存單元,也不會對該靜態成員資料初始化。

靜態成員資料初始化格式:

《型別》《類名》 ::《靜態成員資料》 = 《數值》 ;

4.類的靜態成員資料具有全域性變數的某些特徵,比如在程式開始執行時就為靜態成員資料分配儲存空間,但它只有類的作用域。即在執行main()之前,首先對靜態成員資料和全域性變數分配儲存空間並進行初始化,當整個程式結束時才撤消靜態成員資料和全域性變數。

5.靜態成員資料也可以分為公有的、私有的和受保護的靜態成員。

對公有靜態成員,即可以通過類的物件進行訪問,也可以通過類名直接訪問(這是靜態成員資料與一般成員資料的另乙個區別)。格式:

《類名》::《靜態成員資料》

私有的和保護的靜態成員資料則只能被該類的公有成員函式訪問。

6.值得注意的是,在建立任何物件之前,類的靜態成員資料已經存在並可以引.

7.靜態成員資料也可以是使用者自定義型別的資料。

1.2靜態成員函式

1.定義靜態成員函式時,只要在成員函式名前用關鍵字static修飾即可。

2.靜態成員函式屬於整個類,它是由該類的所有物件所共享的成員函式,它不屬於某個物件。因此它不含有隱含的*this指標引數,故它不能像普通成員函式那樣直接訪問物件中的非靜態的成員(成員函式和成員資料),即

靜態成員函式只能訪問所在類的靜態的成員(成員函式和成員資料)、全域性變數、外部函式等。(因為它們不屬於任乙個特定物件)。

3。靜態成員函式若要訪問非靜態成員,則必須借助於類的物件(物件名或指向物件的函式引數)。

4.靜態成員函式首先是乙個成員函式,它可以定義為內聯函式,也可以在類體外定義,但此時函式名前不必加關鍵字static.

5.可以通過所在類的物件訪問靜態成員函式(公有的)外,還可以通過類名直接訪問,格式為:

《類名》::《靜態成員函式名》(《實參表》)

6.靜態成員函式不能為const成員函式。

C 靜態成員資料 定義 初始化

由於記憶體的空間有限,我們常常關心已經使用掉了多少記憶體空間。如果我們修改上一章的鍊錶程式 程式15.5 要能計算出整個程式一共產生了多少鍊錶結點,我們該怎麼做呢?顯然,我們需要乙個計數器。每產生乙個結點,計數器就加一 每消除乙個結點,計數器就減一。由於結點的產生和消除只會與鍊錶類或結點類的某些成員...

靜態成員資料和靜態成員函式

在c 中,經常可以看到static開頭的語句,那麼這就是在定義靜態成員資料或者靜態成員函式了。類中的某個資料一旦被定義為靜態成員資料,那麼這個資料就可以被由這個類建立的任何物件共享。這個資料就是靜態成員資料。注意 一般,類只是定義了其結構 型別,而建立物件時才會分配記憶體空間。比如乙個student...

C 靜態成員初始化

在c 類中,靜態成員一般不允許在類宣告中進行初始化,應該在類的外部進行初始化,例如 class a static int a a 0 初始化方式 void main void 但是有乙個例外,可以為靜態成員提供const 整數型別的類內初始值。要求靜態成員必須是字面值常量型別的constexpr 因...