C++成員初始化列表
文章轉(zhuǎn)自: 公眾號(hào):Coder梁(ID:Coder_LT)
除了可以使用構(gòu)造函數(shù)Classy::Classy(int n, int m): mem1(n), mem2(0), mem3(n*m+2) {
...
};類(lèi)成員進(jìn)行初始化之外,C++還提供了另外一種初始化的方法,叫做成員初始化列表。
我們假設(shè)Classy是一個(gè)類(lèi),而mem1,mem2和mem3都是這個(gè)類(lèi)的數(shù)據(jù)成員,那么類(lèi)構(gòu)造函數(shù)可以寫(xiě)成:
Classy::Classy(int n, int m): mem1(n), mem2(0), mem3(n*m+2) {
? ? ...
};上述代碼將mem1初始化為n,將mem2初始化為了0,mem3初始化成了n*m+2。這些初始化工作是對(duì)象創(chuàng)建是完成的,并且在執(zhí)行花括號(hào)中的內(nèi)容之前。
有這么幾點(diǎn)需要注意:
- 這種格式只能用于構(gòu)造函數(shù)
- 必須用這種格式初始化非靜態(tài)const數(shù)據(jù)成員(C++11之前)
- 必須用這種格式初始化引用數(shù)據(jù)成員
數(shù)據(jù)成員被初始化的順序和它們?cè)陬?lèi)中定義的順序相同,和初始化列表中的排列順序無(wú)關(guān)。
C++11的類(lèi)內(nèi)初始化:
C++11當(dāng)中允許我們直接對(duì)成員變量進(jìn)行賦值:
class Classy {
? ? int mem1 = 10;
? ? const int mem2 = 20;
};這和在構(gòu)造函數(shù)當(dāng)中使用成員初始化列表等價(jià):
Classy::Classy() : mem1(0), mem2(20) {...}我們?cè)陬?lèi)當(dāng)中直接初始化之后,我們也可以在成員初始化列表當(dāng)中進(jìn)行覆蓋:
Classy::Classy(int n) : mem1(n) {...}在這種情況下,mem1的值會(huì)被替換成n。
到此這篇關(guān)于C++成員初始化列表的文章就介紹到這了,更多相關(guān)C++成員初始化列表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入理解C++模板如何實(shí)現(xiàn)多態(tài)思想
這篇文章主要為大家詳細(xì)介紹了C++模板如何實(shí)現(xiàn)多態(tài)的相關(guān)資料,文中的示例代碼講解詳細(xì),對(duì)我們深入了解C++有一定的幫助,感興趣的可以了解一下2023-03-03
C語(yǔ)言中sizeof()與strlen()的區(qū)別詳解
這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中sizeof()與strlen()區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
C++簡(jiǎn)單QQ程序服務(wù)器端的實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了C++簡(jiǎn)單QQ程序服務(wù)器端的實(shí)現(xiàn)代碼,感興趣的朋友可以參考一下2016-05-05
C++函數(shù)參數(shù)取默認(rèn)值的深入詳解
本篇文章是對(duì)C++中函數(shù)參數(shù)取默認(rèn)值進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C++實(shí)現(xiàn)LeetCode數(shù)組練習(xí)題
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode的幾道數(shù)組練習(xí)題,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
QT實(shí)現(xiàn)TCP客戶(hù)端自動(dòng)連接
這篇文章主要為大家詳細(xì)介紹了QT中一個(gè)TCP客戶(hù)端自動(dòng)連接的測(cè)試模型,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-12-12

