1. 程式人生 > >c++基礎語法之構造函數和初始化表

c++基礎語法之構造函數和初始化表

沒有 參數表 編譯器 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++基礎語法之構造函數和初始化表