最近在做乙個關於boost的專案, 修改將原本的多個commandline進行合併精簡,合併成乙個path路徑, 然後再加上不同的hardcode的檔名組成乙個完整的路徑。由於在使用ptree時會呼叫靜態方法建立乙個instance的類, 因此這裡需要使用靜態成員變數。大概整理了一下以前沒有注意過的類的成員變數的初始化。
普通成員變數的初始化可以在建構函式中進行賦值, 也可以在初始化列表中進行賦值, 具體裡的例子如下:
靜態成員變數必須在類外進行初始化, 且初始化時不加static字首。class
ctest
;ctest::
ctest()
orctest::
ctest()
:mdata(0
)
const變數在初始化列表中進行初始化。class
ctest
;ctest::
ctest()
int mdata =0;
/// 類外初始化
引用成員變數也需要在初始化列表中進行初始化, 類似於const型。class
ctest
;ctest::
ctest()
:data(0
)
就到這裡吧。int gfirst;
class
ctest
;ctest::
ctest()
:msecond
(&gfirst)
類成員變數初始化
在 c 中,類的成員變數未初始化問題,取決於物件建立方式,不同的建立方式,直接導致類成員變數的初值不同。本文通過下例,得出一下結論 1.在函式體內置立乙個物件,類成員變數和普通的區域性變數一樣,是乙個隨機值。2.建立乙個全域性成員物件,類成員變數和全域性變數一樣,編譯器賦值為 0。3.在函式體內 n...
C 類中成員變數初始化
c 類中成員變數包括主要四種 普通成員變數,常量成員變數,靜態成員變數,靜態常量成員變數 上述成員變數該如何初始化,注意不是賦值。由於普通成員變數和常量成員變數,每乙個類例項化,都乙份記憶體拷貝。c 規定成員變數在宣告 注意宣告與定義區別 時,不允許初始化,因此這些變數只能放在建構函式初始化列表中。...
c 成員變數初始化
include include using namespace std classa a a intmain 類a的成員變數將進行預設初始化 c 11新特性允許為資料成員提供類內初始值 include include using namespace std classa a a intmain a....