C++的初始化列表和列表初始化

C++的初始化列表和列表初始化

初始化列表

初始化列表是聲明在構(gòu)造函數(shù)中來實(shí)現(xiàn)的,相當(dāng)于初始化东亦,而不是復(fù)制操作

初始化列表示例

class Test_A{
public:
    Test_A(): a(0) {

    }

private:
    int a;
};

??如代碼中,跟隨在構(gòu)造函數(shù)聲明冒號(hào)后的即是

初始化列表的好處

初始化列表是由其必要性的唬渗,比如const變量典阵、引用、禁止復(fù)制構(gòu)造函數(shù)的類镊逝、沒有默認(rèn)構(gòu)造函數(shù)的類

  • 避免調(diào)用多次構(gòu)造函數(shù)

列表初始化

C語言中直接使用{}定義且賦值的操作其實(shí)就可以稱之為列表初始化

對(duì)象初始化

對(duì)象初始化比較復(fù)雜壮啊,涉及到很多的構(gòu)造函數(shù);這里只關(guān)注于使用列表這樣的初始化方式

struct Test_ST_A {
    int  num;
    char *ptr;
    float fnum;
};
class Test_Class_A {
public:
    //virtual ~Test_Class_A() {};
    //Test_Class_A() {};
    int  num;
    char *ptr;
    float fnum;
private:
    //Test_Class_A(const Test_Class_A &) {};
};

int main() {
    Test_ST_A st_a = { 0, NULL, 1.1};

    Test_Class_A cla_a = { 0, NULL, 1.1};
    return 0;
}

??在C++中是可以直接使用{}包含多個(gè)參數(shù)直接對(duì)內(nèi)部數(shù)據(jù)進(jìn)行初始化的蹋半,并且這些參數(shù)的類型是可以不一致的他巨;同時(shí)如果定義了構(gòu)造函數(shù)充坑、虛函數(shù)之類的則無法再這樣初始化了减江,必須定義符合一致的Test_Class_A(int, const char* , float) {};構(gòu)造函數(shù)方可。這就是列表初始化捻爷,調(diào)用的是構(gòu)造函數(shù)喲

initializer_list

這個(gè)類主要是針對(duì)于容器來的辈灼,對(duì)于容器來說也應(yīng)當(dāng)想C語言中數(shù)組一樣提供類似的初始化、賦值函數(shù)

int main() {
    std::vector<int> v = {1, 2, 3};
    return 0;
}

??這里可以當(dāng)作簡(jiǎn)單的語法糖也榄,但是當(dāng)我們期望傳入一個(gè){}(<brace-enclosed initializer list>)來初始化一個(gè)類內(nèi)部的vector該如何呢巡莹?

class Test_Class_A {
public:
    //virtual ~Test_Class_A() {};
    Test_Class_A(std::initializer_list<int> l): data(l) {
        
    };
    std::vector<int> data;
};

int main() {
    Test_Class_A tca = { 1, 2, 3};
    return 0;
}

??寫到這里司志,感覺到C++這樣的語言期望能實(shí)現(xiàn)很多非常優(yōu)良的特性,很多時(shí)候?yàn)榱四骋粋€(gè)點(diǎn)就需要引入一個(gè)新的概念降宅,比如remove_reference骂远、initializer_list、左值引用腰根;和C語言的"精簡(jiǎn)"已經(jīng)漸行漸遠(yuǎn)了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末激才,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子额嘿,更是在濱河造成了極大的恐慌瘸恼,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件册养,死亡現(xiàn)場(chǎng)離奇詭異东帅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)球拦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門靠闭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坎炼,你說我怎么就攤上這事阎毅。” “怎么了点弯?”我有些...
    開封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵扇调,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我抢肛,道長(zhǎng)狼钮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任捡絮,我火速辦了婚禮熬芜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘福稳。我一直安慰自己涎拉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開白布的圆。 她就那樣靜靜地躺著鼓拧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪越妈。 梳的紋絲不亂的頭發(fā)上季俩,一...
    開封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音梅掠,去河邊找鬼酌住。 笑死店归,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的酪我。 我是一名探鬼主播消痛,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼都哭!你這毒婦竟也來了肄满?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤质涛,失蹤者是張志新(化名)和其女友劉穎稠歉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體汇陆,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怒炸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了毡代。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阅羹。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖教寂,靈堂內(nèi)的尸體忽然破棺而出捏鱼,到底是詐尸還是另有隱情,我是刑警寧澤酪耕,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布导梆,位于F島的核電站,受9級(jí)特大地震影響迂烁,放射性物質(zhì)發(fā)生泄漏看尼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一盟步、第九天 我趴在偏房一處隱蔽的房頂上張望藏斩。 院中可真熱鬧,春花似錦却盘、人聲如沸狰域。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兆览。三九已至,卻和暖如春旬陡,著一層夾襖步出監(jiān)牢的瞬間拓颓,已是汗流浹背语婴。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工描孟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留驶睦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓匿醒,卻偏偏與公主長(zhǎng)得像场航,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子廉羔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 由于歷史原因溉痢,C++中的初始化方式比較雜亂,目前筆者按照自己的理解自己總結(jié)了一下憋他,不能保證其正確性孩饼,測(cè)試代碼在后面...
    夜風(fēng)_3b8d閱讀 2,647評(píng)論 0 0
  • 在C++11中,vector的初始化和等號(hào)賦值都出現(xiàn)了這樣的語法 而在C++11以前竹挡,我們只能: 看到這種C++1...
    cheerss閱讀 5,275評(píng)論 1 1
  • 即镀娶,以大括號(hào)形式給某容器對(duì)象初始化,如下圖所示: 這種形式的初始化之所以行得通揪罕,是因?yàn)镃++11中的容器的構(gòu)造函數(shù)...
    Stroman閱讀 2,006評(píng)論 0 1
  • 1梯码、在給結(jié)構(gòu)體賦值的時(shí)候,可以使用一對(duì)大括號(hào)來進(jìn)行賦值好啰,賦值過程中會(huì)按照結(jié)構(gòu)體成員順序來進(jìn)行賦值轩娶; 初始化的類型是...
    Sky_Mao閱讀 590評(píng)論 0 0
  • 久違的晴天,家長(zhǎng)會(huì)框往。 家長(zhǎng)大會(huì)開好到教室時(shí)鳄抒,離放學(xué)已經(jīng)沒多少時(shí)間了。班主任說已經(jīng)安排了三個(gè)家長(zhǎng)分享經(jīng)驗(yàn)椰弊。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,524評(píng)論 16 22