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

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

C/C++編程筆記:什么時候在C++中使用初始化列表?

2021-04-28 19:42 作者:C語言編程__Plus  | 我要投稿



初始化程序列表用于初始化類的數(shù)據(jù)成員。構(gòu)造函數(shù)將要初始化的成員列表表示為逗號分隔的列表,后跟冒號。下面是一個使用初始化程序列表初始化Point類的x和y的示例:


上面的代碼只是初始化列表的語法示例。在上面的代碼中,x和y也可以在構(gòu)造函數(shù)中輕松初始化。但是在某些情況下,構(gòu)造函數(shù)內(nèi)部的數(shù)據(jù)成員的初始化無法正常工作,必須使用Initializer List。以下是這種情況:

1)對于非靜態(tài)const數(shù)據(jù)成員的?

初始化必須使用Initializer List初始化const數(shù)據(jù)成員。在以下示例中,“ t”是Test類的const數(shù)據(jù)成員,并使用初始化列表進(jìn)行初始化。在初始化列表中初始化const數(shù)據(jù)成員的原因是因?yàn)闆]有為const數(shù)據(jù)成員單獨(dú)分配內(nèi)存,因此將其折疊在符號表中,因此我們需要在初始化列表中對其進(jìn)行初始化。?

同樣,它是一個參數(shù)化的構(gòu)造函數(shù),我們不需要調(diào)用賦值運(yùn)算符,這意味著我們避免了一個額外的操作。?


2)對于引用成員的初始化:?

必須使用“初始化列表”來初始化引用成員。在以下示例中,“ t”是Test類的引用成員,并使用初始化列表進(jìn)行初始化。


3)對于沒有默認(rèn)構(gòu)造函數(shù)的成員對象的初始化:?

在以下示例中,類“ A”的對象“ a”是類“ B”的數(shù)據(jù)成員,而“ A”沒有默認(rèn)構(gòu)造函數(shù)。初始化列表必須用于初始化“ a”。


如果類A同時具有默認(rèn)構(gòu)造函數(shù)和參數(shù)化構(gòu)造函數(shù),則如果要使用默認(rèn)構(gòu)造函數(shù)初始化“ a”,則不必使用“初始化列表”,而必須使用參數(shù)化構(gòu)造函數(shù)初始化“ a”。?

4)對于基類成員的初始化:與第3點(diǎn)一樣,只能使用Initializer List調(diào)用基類的參數(shù)化構(gòu)造函數(shù)。


5)當(dāng)構(gòu)造函數(shù)的參數(shù)名稱與數(shù)據(jù)成員相同時?

如果構(gòu)造函數(shù)的參數(shù)名稱與數(shù)據(jù)成員名稱相同,則必須使用此指針或“初始化列表”來初始化數(shù)據(jù)成員。在以下示例中,A()的成員名稱和參數(shù)名稱均為“ i”。


6)出于性能方面的考慮:?

最好在Initializer List中初始化所有類變量,而不是在主體內(nèi)分配值。考慮以下示例:?


在這里,編譯器按照以下步驟創(chuàng)建類型為MyClass

1的對象?。類型的構(gòu)造函數(shù)首先被稱為“ a”。?

2.在MyClass()構(gòu)造函數(shù)的內(nèi)部調(diào)用“類型”的賦值運(yùn)算符進(jìn)行賦值?

? ? 變量= a;

3.然后,由于“類型”的析構(gòu)函數(shù)超出范圍,因此最終將其稱為“ a”。

現(xiàn)在考慮使用具有初始化程序列表的MyClass()構(gòu)造函數(shù)的相同代碼?


使用“初始化程序列表”,編譯器將執(zhí)行以下步驟:?

1.調(diào)用“ Type”類的參數(shù)化構(gòu)造函數(shù)進(jìn)行初始化:變量(a)。初始化程序列表中的參數(shù)用于直接復(fù)制構(gòu)造“變量”。?

2.“類型”的析構(gòu)函數(shù)被稱為“ a”,因?yàn)樗隽朔秶?/p>

從本示例可以看出,如果在構(gòu)造函數(shù)主體內(nèi)使用賦值,則有三個函數(shù)調(diào)用:構(gòu)造函數(shù)+析構(gòu)函數(shù)+一個附加賦值運(yùn)算符調(diào)用。如果我們使用Initializer List,則只有兩個函數(shù)調(diào)用:復(fù)制構(gòu)造函數(shù)+析構(gòu)函數(shù)調(diào)用。

以上就是今天的全部內(nèi)容了。每日分享小知識,希望對你有幫助~

另外如果你想更好的提升你的編程能力,學(xué)好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~

微信公眾號:C語言編程學(xué)習(xí)基地

分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!



C/C++編程筆記:什么時候在C++中使用初始化列表?的評論 (共 條)

分享到微博請遵守國家法律
溧阳市| 滁州市| 潞西市| 台州市| 潜江市| 寿宁县| 若尔盖县| 西林县| 仙居县| 贺州市| 自贡市| 温州市| 隆回县| 麻城市| 敦煌市| 宁强县| 丰都县| 海南省| 威信县| 惠安县| 神木县| 阳新县| 湟源县| 罗江县| 崇信县| 大城县| 浪卡子县| 禄丰县| 田东县| 琼中| 通化县| 资溪县| 修水县| 铁力市| 封开县| 璧山县| 台州市| 阜南县| 云南省| 类乌齐县| 茶陵县|