大致分為以下幾類:
( 1 )全預設引數初始化, 不用傳參。
(2)半預設引數初始化, 只需傳部分引數。
(3)無缺省引數初始化,定義多少個成員變數,傳多少個引數。
(4)使用初始化列表初始化,此類初始化更加高效,建議初始化的順序與宣告的順序相同。
首先定義乙個日期類如下:
因為使用初始化列表相當於在宣告變數的時候就初始化了,省去了傳參過程中的開銷,因此會更加的高效,而且使用初始化列表進行初始化的順序與宣告變數的順序是相同的,因此建議初始化列表初始順序與宣告順序一致。class date
//半預設引數
//無缺省引數
//初始化列表初始化
private:
int _year;
int _month;
int _day;
};void testdate()
深入探索預設建構函式
問題 傳統認識為 如果我們自己在類中沒有定義任何建構函式,那麼編譯器就會為我們隱式自動生成乙個預設的建構函式,我們稱這種建構函式為 合成的預設建構函式 事實的真相果真如此嗎?結論 合成預設建構函式 只有在必要的時候,編譯器才會為我們自動合成出來,而不是必然為我們合成出來。那到底什麼時候是必要的呢?演...
初始化列表(深入探索建構函式)
一 類的成員變數有兩種初始化方式 一是建構函式體內進行賦值 二是初始化列表進行初始化。初始化列表以乙個冒號開始,以逗號分隔資料列表,每乙個元素要初始化的值都在括號中。class date private int year int month int day 二 初始化列表更高效 嘗試執行以下 在上面...
深入探索C 物件模型 七 構造
三個重要函式 建構函式,析構函式,拷貝建構函式。1.無繼承情況下的物件構造。當類中存在虛函式時,編譯器會對該類產生膨脹作用,例如如下類 cpp view plain copy class point virtual float z protected float x,y a.我們所定義的建構函式中,...