C 基礎 初始化列表

2021-10-14 16:27:39 字數 1012 閱讀 1645

基本寫法

class cmyclass ;

cmyclass::cmyclass(int x, int y) : m_y(y), m_x(m_y) {};

構造函式引數存在class定義的型別時,使用初始化列表會少一次構造呼叫

#include using namespace std;

class hand ;

};class person1 ;

};class person2 ;

};int main()

/* 程式輸出 */

/*不使用初始化列表:

呼叫hand建構函式

呼叫hand建構函式

使用初始化列表:

呼叫hand建構函式

*/

必須使用初始化列表的情況:

1.常量成員,因為常量只能初始化不能賦值,所以必須放在初始化列表裡面;

using namespace std;

class person1 ;

};

2.引用型別,引用必須在定義的時候初始化,並且不能重新賦值,所以也要寫在初始化列表裡面

using namespace std;

class thread_guard ;

};

3. 沒有預設建構函式的類型別,因為使用初始化列表可以不必呼叫預設建構函式來初始化,而是直接呼叫拷貝建構函式初始化

#include using namespace std;

class mind1 ;

};//class mind2 ;

//};

class person ;

};int main()

初始化列表順序

class foo

; // ok, 先初始化i,後初始化j

};

c 初始化列表

與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。struct foo 初始化列表 建構函式的兩個執行階段 從概念上來講,建構函式的執行可以分成兩個階段,初始化階段和計算階段,初始化階段先於計算階段 初始化階段 所有...

C 初始化列表

與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。在c 中,struct和class的唯一區別是預設的克訪問性不同,而這裡我們不考慮訪問性的問題,所以下面的 都以struct來演示。struct foo 初始化列表 ...

C 初始化列表

與其他函式不同,建構函式除了有名字,引數列表和函式體之外,還可以有初始化列表,初始化列表以冒號開頭,後跟一系列以逗號分隔的初始化字段。struct foo 初始化列表 建構函式的執行可以分成兩個階段,初始化階段和計算階段,初始化階段先於計算階段。所有類型別 class type 的成員都會在初始化階...