c++基礎語法之構造函數和初始化表
阿新 • • 發佈:2018-09-06
沒有 參數表 編譯器 ima http 構造函數 struct 轉換 顯示
筆者剛系統的重學了c++的語法,看到構造函數和初始化表這塊,發現這塊語法有點復雜且很雜,怕以後忘記,於是寫下此篇,以後回憶之用。
c++構造函數
3、構造函數(constructor)
Class/struct 類名 {
//構造函數
類名(形參表) {函數體}
};
1)構造函數名字和類名相同,沒有返回類型
2)構造函數在對象被創建時自動被調用
3)構造函數主要負責對象的初始化,即初始化成員變量
4)構造函數在每個對象的生命周期,一定會被自動調用,但只會被調用一次
Class A {
A(void) {.....} //構造函數
};
Int main (void) {
A a; //自動調用構造函數
}
構造函數重載(重載其本質就是編譯器的改變函數的名字)
構造函數可以通過參數表的不同形成重載,在創建對象時通過構造實參的類型選擇匹配,表示不同對象的創建方式。
2、缺省構造函數(默認構造函數/無參構造函數)
1)如果一個類沒有定義任何構造函數,編譯器會提供一個缺省的無參構造函數
如果定義了構造函數,無論是否有參數,編譯器都不會再提供缺省的無參構造函數
2)對於類中的基本類型成員變量,不做初始化
3)對於類 類型的成員變量,調用相應的無參構造函數來初始化
3、類型轉換構造函數(單參構造函數)
Class 目標類型 {
目標類型(源類型) {......}
};
可以接收單個源類型對象實參的構造函數,支持從源類型到目標類型的隱式轉換
explicit關鍵字:用於修飾類型轉換的構造函數,強制的要求這種轉換必須顯示的進行
c++基礎語法之構造函數和初始化表