(1)確定物件被使用前已經被初始化

2022-08-03 02:15:10 字數 725 閱讀 4668

在物件使用之前將它初始化,對於無任何成員的內建型別,你必須手工完成此事。

例如:int x = 0;

const char *text = " ";

double d;

std::cin >> d;    //以input stream 的方式完成初始化

內建型別以外的任何其他東西,初始化責任落在建構函式身上。確保每乙個建構函式都將物件的每乙個成員初始化。

1

1class

ctest 99

1010

//建構函式內部賦值

1111

ctest()

1515 };

view code

初始化和賦值對內建型別的成員沒有什麼大的區別,像上面的任乙個建構函式都可以。對非內建型別成員變數,為了避免兩次構造,推薦使用類建構函式初始化列表。

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...