建立類物件時會自動呼叫建構函式
建構函式不需且不能手動呼叫
預設建構函式:在建立物件時不必給出實參的建構函式。包括無參建構函式和全部引數都有預設值的建構函式。
如果使用者沒有定義建構函式,則系統會自動提供乙個預設建構函式,即上述的無參建構函式,函式體為空。當給類中的私有常量定義時,必須通過引數初始化列表來定義,因為引數初始化表是先於函式體執行的,而常量不允許修改。
class circle
private:
const
double m_dpi;
};
下面這種寫法是不被允許的
circle()
在宣告建構函式時指定預設值,而不能只在定義建構函式時指定預設值。
因為建構函式的宣告在類定義中,而類定義是放在標頭檔案中的,是類的對外介面,而建構函式的定義是類的實現細節,使用者不一定看得到。這一特點在分檔案中尤其明顯。
class box;
box::box(int h, int w, int len)
定義格式 :類名(const 類名 & 變數名)
注:一般約定加const宣告,避免在呼叫此函式時修改實參物件。
當採用直接初始化或賦值初始化例項化物件時系統會自動呼叫拷貝建構函式。
如果沒有顯性定義的拷貝建構函式則系統會自動生成乙個預設的拷貝建構函式。
class student
/*預設的拷貝建構函式:
student(const student &stu){}
*/student(const student &stu)
//顯性定義的拷貝建構函式
private:
string m_strname;
};int main()
建構函式初始化列表
建構函式初始化列表以乙個冒號開始,接著是以逗號分隔的資料成員列表,每個資料成員後面跟乙個放在括號中的初始化式。例如 example example ival 0 dval 0.0 ival 和dval 是類的兩個資料成員 上面的例子和下面不用初始化列表的建構函式看似沒什麼區別 example exa...
建構函式初始化列表
c 程式語言中有很多比較重要的概念值得我們去深入 比如今天為大家介紹的有關c 建構函式的相關概念。這一方面的知識在實際程式設計中就是乙個比較重要的應用技術。希望能個大家可以從中學到一些知識。c 建構函式初始化列表以乙個冒號開始,接著是以逗號分隔的資料成員列表,每個資料成員後面跟乙個放在括號中的初始化...
建構函式初始化列表
class object private int v1,v2 看看願意是 先初始化v2為5,然後初始化v1為 3 倍的 v2 但是結果卻是奇葩的,這個是因為建構函式的初始化列表遵循的原則是先初始化父類 父類也是這個原則,那麼就相當於遞迴 然後初始化本類的成員,最後執行建構函式的函式體 而初始化本類的...