最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C++ 構(gòu)造函數(shù)再探

2023-04-16 13:55 作者:S-a-i_  | 我要投稿

如果成員為const或者引用,那么必須初始化,或者當(dāng)成員屬于某種類類型且該類類型沒有定義默認(rèn)構(gòu)造函數(shù)時,必須將這個成員初始化。

隨著構(gòu)造函數(shù)一開始執(zhí)行,初始化就完成了,我們初始化const或者引用類型的數(shù)據(jù)成員唯一的機(jī)會就是通過構(gòu)造函數(shù)初始值,因此我們可以這樣寫構(gòu)造函數(shù)

建議養(yǎng)成構(gòu)造函數(shù)初始化的習(xí)慣!


成員初始化的順序

構(gòu)造函數(shù)初始化列表只說明用于初始化成員的值,而不限定初始化的具體執(zhí)行順序。

成員初始化順序和他們在類定義中的順序一致,第一個成員先被初始化,然后是第二個。構(gòu)造函數(shù)初始值列表中初始化的前后位置關(guān)系不會影響實(shí)際的初始化順序。

看起來是val初始化了j,然后再用j初始化i,事實(shí)上i先被初始化,因此這個初始值的效果是試圖讓未定義的j初始化i。

注意:最好令構(gòu)造函數(shù)初始值的順序和成員聲明的順序保持一致,而且盡可能避免使用某些成員初始化其他成員。


默認(rèn)實(shí)參和構(gòu)造函數(shù)

上面的構(gòu)造函數(shù)只接受一個string實(shí)參其實(shí)和默認(rèn)構(gòu)造器差不多,只不過我們使用默認(rèn)實(shí)參初始化bookNo。


委托構(gòu)造函數(shù)

一個委托構(gòu)造函數(shù)使用它所屬類的其他構(gòu)造函數(shù)執(zhí)行它自己的初始化過程。

除了第一個構(gòu)造函數(shù)外,其他的構(gòu)造函數(shù)都委托了他們的工作。

這里接受istream&的構(gòu)造函數(shù)先委托了默認(rèn)構(gòu)造函數(shù),然后默認(rèn)構(gòu)造函數(shù)委托了第一個構(gòu)造函數(shù),當(dāng)這些受委托的構(gòu)造函數(shù)執(zhí)行完后,接著執(zhí)行istream&構(gòu)造函數(shù)體的內(nèi)容。

當(dāng)一個構(gòu)造函數(shù)委托給另一個構(gòu)造函數(shù)時,受委托的構(gòu)造函數(shù)的初始值列表和函數(shù)體被依次執(zhí)行,只是上面代碼受委托的函數(shù)體為空,如果函數(shù)體包含代碼的話,將先執(zhí)行這些代碼,然后控制權(quán)才會回到委托者的函數(shù)體。


默認(rèn)構(gòu)造函數(shù)的作用

注意:如果定義了其他構(gòu)造函數(shù),最好提供一個默認(rèn)構(gòu)造函數(shù)!


隱式的類類型轉(zhuǎn)換

編譯器只會自動的執(zhí)行一步類型轉(zhuǎn)換。

第一個combine試圖完成字符串對string的轉(zhuǎn)換,然后實(shí)現(xiàn)臨時的string初始化Sales_data。


抑制構(gòu)造函數(shù)定義的隱式轉(zhuǎn)換

此時沒有任何構(gòu)造器能用于隱式的創(chuàng)建Sales_data對象。

上面兩個運(yùn)用都是錯誤的!

注意:explicit只能在類內(nèi)聲明構(gòu)造函數(shù)時使用。



聚合類

一個類滿足

1所有成員都是public

2沒有定義任何構(gòu)造函數(shù)

3沒有類內(nèi)初始值

4沒有基類也沒有virtual函數(shù)(我們后面會介紹)

這就是一個聚合類。

我們可以提供一個花括號括起來的成員初始值列表,并用它初始化聚合類的數(shù)據(jù)成員

這里初始值的順序必須和聲明順序一致,否則就是錯誤的。

如果列表里的值少于聚合類成員,那么后面的成員自動執(zhí)行值初始化。


顯式的初始化有三個缺點(diǎn):

1類的所有成員都是public

2將初始化的操作交給了用戶而不是作者,這樣用戶可能會給一個錯誤的類型

3增加或減少一個成員,所有的初始化語句都要更新。


C++ 構(gòu)造函數(shù)再探的評論 (共 條)

分享到微博請遵守國家法律
晋江市| 黔江区| 玉田县| 郓城县| 临汾市| 黑山县| 凤山县| 宽城| 苍溪县| 中宁县| 中卫市| 南投县| 石狮市| 晴隆县| 梓潼县| 股票| 旅游| 东兴市| 四会市| 大足县| 宁安市| 邢台市| 田林县| 和田市| 门源| 宣汉县| 拉萨市| 清丰县| 白河县| 景宁| 东乌| 公主岭市| 宣汉县| 土默特左旗| 分宜县| 江油市| 清丰县| 泰兴市| 景宁| 罗源县| 通江县|