c++中的構(gòu)造函數(shù)具有如下特征:
創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站建設(shè)和成都天府聯(lián)通服務(wù)器托管的網(wǎng)絡(luò)公司,有著豐富的建站經(jīng)驗(yàn)和案例。
1
與類同名
2
不能指定返回類型
3
創(chuàng)建對象時(shí)自動調(diào)用,不能手動調(diào)用
4
如果不顯式提供一個(gè),會自動提供一個(gè)無參(默認(rèn))構(gòu)造函數(shù)
5
可以重載
6
老標(biāo)準(zhǔn)下不能繼承和委托構(gòu)造(調(diào)用本類的另一個(gè)構(gòu)造函數(shù)),新標(biāo)準(zhǔn)下可以
7
新標(biāo)準(zhǔn)下可以有移動構(gòu)造函數(shù)和常量表達(dá)式構(gòu)造函數(shù)
構(gòu)造函數(shù)是面向?qū)ο蟮木幊讨谐霈F(xiàn)的一種方法,它是每個(gè)類都會有的方法,作用是構(gòu)造及初始化對象。為了程序編譯時(shí)能很好地辨識這個(gè)必須的“構(gòu)造函數(shù)”。那這個(gè)構(gòu)造函數(shù)的名字最好就有一定的規(guī)定?,F(xiàn)在規(guī)定了構(gòu)造函數(shù)名字和類名一致,編譯時(shí)就知道哪些是構(gòu)造函數(shù),
實(shí)例化對象時(shí)就會調(diào)用合適的構(gòu)造函數(shù)進(jìn)行類的實(shí)例化。
構(gòu)造函數(shù)
是一種特殊的方法
主要用來在創(chuàng)建對象時(shí)對對象進(jìn)行初始化。即為對象成員變量賦初始值,總與new運(yùn)算符一起使用在創(chuàng)建對象的語句中。特別地,一個(gè)類可以有多個(gè)構(gòu)造函數(shù)
可根據(jù)其參數(shù)個(gè)數(shù)的不同或參數(shù)類型的不同來區(qū)分它們,就是構(gòu)造函數(shù)的重載。
構(gòu)造函數(shù)是類自己在對象剛剛創(chuàng)建時(shí)候自己調(diào)用的,一般不允許用戶自己顯示調(diào)用構(gòu)造函數(shù)。用戶只要將構(gòu)造函數(shù)寫好,類在實(shí)例化對象的時(shí)候自動調(diào)用合適的構(gòu)造函數(shù)對對象進(jìn)行初始化(若有多個(gè)構(gòu)造函數(shù),系統(tǒng)會根據(jù)構(gòu)造函數(shù)的形參來進(jìn)行選擇)。
你可能會看到有些類沒有構(gòu)造函數(shù),這時(shí)候編譯器會自動生成一個(gè)形參為空的函數(shù)體為空的構(gòu)造函數(shù)給該類??傊瑯?gòu)造函數(shù)是必須的。
你說的不懂的地方,其實(shí)就是在實(shí)例化kkk這個(gè)對象的時(shí)候,即kkk剛創(chuàng)建的時(shí)候,系統(tǒng)對自動調(diào)用一次Program類的構(gòu)造函數(shù)。這就是構(gòu)造函數(shù)唯一一次調(diào)用的地方。用戶是不能顯示調(diào)用構(gòu)造函數(shù)的。
這和C語言是有區(qū)別的,構(gòu)造函數(shù)用于對象的初始化,這樣可以使對象的封裝性更好。
構(gòu)造函數(shù)是一種用于創(chuàng)建對象的特殊函數(shù),當(dāng)創(chuàng)建對象是,系統(tǒng)自動調(diào)用構(gòu)造函數(shù),不能在程序中直接調(diào)用.
構(gòu)造函數(shù)名與類名相同,一個(gè)類可以擁有多個(gè)構(gòu)造函數(shù)(重載),構(gòu)造函數(shù)可以有任意類型的參數(shù),但不能具有返回類型!
構(gòu)造函數(shù)的作用是:為對象分配空間;對數(shù)據(jù)成員賦初值;請求起他資源.
析構(gòu)函數(shù)作用是清除對象,釋放內(nèi)存等
構(gòu)造函數(shù)通常用于在實(shí)例化對象時(shí)自動對內(nèi)部數(shù)據(jù)成員初始化,設(shè)置初始值、分配內(nèi)存空間等。 而析構(gòu)函數(shù)則用于刪除對象時(shí)做收尾工作,比如釋放申請的空間等。 要創(chuàng)建一個(gè)對象,就得調(diào)用構(gòu)造函數(shù)。 要銷毀一個(gè)對象,就會被迫的調(diào)用析構(gòu)函數(shù)。