**:
關於類的建構函式,可以分為兩個部分,初始化部分(初始化列表)和計算部分(花括號間的賦值運算),在花括號作用域間進行的運算不是初始化,而是賦值。
對於必須在定義時初始化的情況在類建構函式中也是相同的
總結如下:
1、const成員:常量,不能被改變,定義的同時必須初始化
2、引用成員:&,別名,與目標共享位址,定義的同時必須初始化
3、沒有預設建構函式供系統自動呼叫:
(1)物件成員:a類的成員是b類的物件,在構造a類時需對b類的物件進行構造,當b類沒有預設建構函式時需要在a類的建構函式初始化列表中對b類物件初始化
(2)類的繼承:派生類在建構函式中要對自身成員初始化,也要對繼承過來的基類成員進行初始化,當基類沒有預設建構函式的時候,通過在派生類的建構函式初始化列表中呼叫基類的建構函式實現
下面是1、2驗證程式
#include
using namespace std;
//const成員的初始化只能在建構函式的初始化列表中進行
//引用成員的初始化也只能在建構函式的初始化列表中進行
class object
private:
int num_;
const int knum_;
//成員變數是乙個常量,未初始化
int& refnum_;
//成員變數是乙個引用,未初始化};
int main(void)
下面是3驗證程式
#include
using namespace std;
class base
~base()
int b_;};
class derived : public base
derived(int b, int d):base(b), d_(d)
~derived()
int d_;};
int main(void)
來自對學習資料的整理,歡迎指正!
必須在類初始化列表中初始化的幾種情況
1.類成員為const型別 2.類成員為引用型別 include using namespace std class a void print val private const inti intp int j int main int argc char argv 究其因 const物件或引用只能...
c 必須在類初始化列表中初始化的幾種情況
1.類成員為const型別 2.類成員為引用型別 include using namespace std class a void print val private const inti const intp int j 引用 int main int argc char argv 究其因 con...
c 必須在類初始化列表中初始化的幾種情況
1.類成員為const型別 2.類成員為引用型別 include using namespace std class a void print val private const int i int p int j int main int argc char argv 究其因 const物件或引用...