c 論類成員變數初始化的不同方式與順序

2021-09-25 20:19:09 字數 791 閱讀 3443

三種初始化方式對成員變數初始化有優先順序:先進行宣告時初始化(即在預設建構函式中直接使用預先賦給成員值進行初始化),然後進行初始化列表初始化,最後進行建構函式初始化。這三種初始化方式可以依次覆蓋(從上邊程式的執行結果可知):初始化列表初始化的變數值會覆蓋掉宣告時初始化的值,而建構函式中初始化的值又會覆蓋掉初始化列表的。

說明下在類定義成員變數並直接賦值的方式的意義:以往使用初始化列表或建構函式對類進行初始化時,每定義乙個類物件就要把特定的值傳給每個成員變數,但有時類的某些成員變數使用預設值即可,不用每定義乙個物件都要指定,這時在定義成員變數並直接賦值的方式非常方便。 網上也有更加通俗的模擬: 好比一台機器能夠生產某種零件,零件的各個尺寸可以在一定程度任意改變,但是我們並不是每次生產這種零件都需要乙個乙個地給定每乙個引數,然後再生產,機器會自己帶有一套「預設」的零件尺寸引數,這樣新手可以直接用預設引數生產,除非你知道每乙個引數都是幹啥的,否則沒必要更改。那麼也可以在建構函式中給出這一套「預設引數」啊,是的,但是假如你有10個建構函式,那麼你每乙個都要複製一次所有成員變數的預設引數嗎?顯然在做重複的無用工作,那麼為什麼不直接在宣告的時候就初始化!

c 類的成員變數初始化

最近在做乙個關於boost的專案,修改將原本的多個commandline進行合併精簡,合併成乙個path路徑,然後再加上不同的hardcode的檔名組成乙個完整的路徑。由於在使用ptree時會呼叫靜態方法建立乙個instance的類,因此這裡需要使用靜態成員變數。大概整理了一下以前沒有注意過的類的成...

類成員變數初始化

在 c 中,類的成員變數未初始化問題,取決於物件建立方式,不同的建立方式,直接導致類成員變數的初值不同。本文通過下例,得出一下結論 1.在函式體內置立乙個物件,類成員變數和普通的區域性變數一樣,是乙個隨機值。2.建立乙個全域性成員物件,類成員變數和全域性變數一樣,編譯器賦值為 0。3.在函式體內 n...

C 類中成員變數初始化

c 類中成員變數包括主要四種 普通成員變數,常量成員變數,靜態成員變數,靜態常量成員變數 上述成員變數該如何初始化,注意不是賦值。由於普通成員變數和常量成員變數,每乙個類例項化,都乙份記憶體拷貝。c 規定成員變數在宣告 注意宣告與定義區別 時,不允許初始化,因此這些變數只能放在建構函式初始化列表中。...