基本寫法
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 的成員都會在初始化階...