在物件使用之前將它初始化,對於無任何成員的內建型別,你必須手工完成此事。
例如:int x = 0;
const char *text = " ";
double d;
std::cin >> d; //以input stream 的方式完成初始化
內建型別以外的任何其他東西,初始化責任落在建構函式身上。確保每乙個建構函式都將物件的每乙個成員初始化。
1view code1class
ctest 99
1010
//建構函式內部賦值
1111
ctest()
1515 };
初始化和賦值對內建型別的成員沒有什麼大的區別,像上面的任乙個建構函式都可以。對非內建型別成員變數,為了避免兩次構造,推薦使用類建構函式初始化列表。
c++初始化類成員時,是按照宣告的順序初始化的,而不是按照出現在初始化列表中的順序。
為避免需要記住成員變數何時必須在成員初值列表中初始化,何時不需要,最簡單的做法就是:總是使用成員初值列。這樣做有時候絕對必要,且又往往比賦值更有效。
為免除「跨編譯單元之初始化次序」問題,請以local static 物件替換non - local static 物件。( ?)
——整理自《effective c++》
Item 4 確定物件使用前已經被初始化
目錄 一.建構函式 二.成員初值列表 三.不同編譯單元的non local static 物件的初始化 一.建構函式 在c和 c 中,一些內建型別 其實也就是c 繼承c的內容 是預設不被自動初始化的,如int double 等等,但在我的gcc 上,int 被預設初始化為0,char 被預設不輸出,...
條款04 確定物件在使用前已經被初始化
讀取未初始化的值會造成不明確的行為。例如下面這個建構函式 abentity abentity const std string name,const std string address,const std list phones thename name theaddress address th...
c 確定物件被使用前已先被初始化
1 對於內建型物件來說,應該進行手工初始化,因為c 不保證初始化他們。2 建構函式最好使用成員初始值 member initialization list 而不是要在建構函式本體內使用賦值操作。初始列列出的成員變數,其排列次序應該是和它們在class中的生命次序相同。class aaa public...