国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++11 列表初始化&initializer_list

這篇具有很好參考價值的文章主要介紹了C++11 列表初始化&initializer_list。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

引子

C++11,是繼C++98后的一次有力更新,引進了很多好用的語法,STL也添加了幾個新容器,也解決了很多的問題。本篇博客就學(xué)習(xí)一下C++11列表初始化的新語法和 initializer_list

C++11 列表初始化&initializer_list

一. 列表初始化

在C++類和對象中,類的構(gòu)造函數(shù)有初始化列表,而我們今天要學(xué)習(xí)的是列表初始化,二者名字相近,但是是兩個不一樣的語法。

我們需要一個Date類介紹相關(guān)語法

class Date
{
public:
	//有參構(gòu)造
	Date(int year, int month, int day)
		:_year(year)
		,_month(month)
		,_day(day)
	{}

	//打印
	void Print()
	{
		cout << _year << "-" << _month << "-" << _day << endl;
	}

private:
	int _year;
	int _month;
	int _day;
};

在以往,我們給一個變量賦值,或者給一個自定義類型初始化,我們是這么做的

C++11 列表初始化&initializer_list

而C++11,提供了列表初始化,即使用 { } 初始化數(shù)據(jù),如下:

C++11 列表初始化&initializer_list
但是底層并沒有那么神奇。我們知道為了適應(yīng)面向?qū)ο螅鋵岰++的基本數(shù)據(jù)類型,比如int,double,其實都有構(gòu)造函數(shù),也有匿名對象。而列表初始化其實就是調(diào)用該類型的構(gòu)造函數(shù)而已。

我們在日期類的構(gòu)造函數(shù)加上一句打印的代碼

//有參構(gòu)造
	Date(int year, int month, int day)
		:_year(year)
		,_month(month)
		,_day(day)
	{
		cout << "Date類的構(gòu)造函數(shù)" << endl;
	}

再執(zhí)行程序,運行結(jié)果如下:

C++11 列表初始化&initializer_list


而STL中的容器也同樣支持使用 { } 初始化

C++11 列表初始化&initializer_list
這是如何實現(xiàn)的呢?
其實是通過C++11新加入的 initializer_list 實現(xiàn)的


二. initializer_list

initializer_list是C++11提供的一種新類型
C++11 列表初始化&initializer_list
C++11 列表初始化&initializer_list

C++11會將 { } 括起來的內(nèi)容識別為常量數(shù)組,然后構(gòu)造成 initializer_list
C++11 列表初始化&initializer_list

C++11 列表初始化&initializer_list
三者其實是等價的。
同時因為是常量數(shù)組,所以內(nèi)容不允許修改
C++11 列表初始化&initializer_list

但是vector等容器是如何支持構(gòu)造的呢?
其實是都增加了一個支持 initializer_list 的構(gòu)造函數(shù)
C++11 列表初始化&initializer_list

map支持如下構(gòu)造

map<string, string>dict = { {"sort","排序"},{"string","字符串"},{"delete","刪除"} };

結(jié)束語

本篇內(nèi)容到此就結(jié)束了,感謝你的閱讀!

如果有補充或者糾正的地方,歡迎評論區(qū)補充,糾錯。如果覺得本篇文章對你有所幫助的話,不妨點個贊支持一下博主,拜托啦,這對我真的很重要。
C++11 列表初始化&initializer_list文章來源地址http://www.zghlxwxcb.cn/news/detail-461020.html

到了這里,關(guān)于C++11 列表初始化&initializer_list的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • PLSQL啟動報錯:Initialization error,不能初始化

    PLSQL啟動報錯:Initialization error,不能初始化

    出現(xiàn)場景:我這里原來有個舊版的PLSQL,想用新版的又裝了個新版,啟動的時候報錯 第一個提示明顯看到是和程序位數(shù)相關(guān)的,不管是32位還是64位要做到向匹配 第二個提示可以看到是和oci.dll文件的設(shè)置相關(guān) 登錄的時候先點取消,不使用用戶登錄,進入客戶端 檢查PLSQL的OC

    2024年01月23日
    瀏覽(38)
  • 【MySQL安裝問題】mysqld --initialize初始化報錯

    【MySQL安裝問題】mysqld --initialize初始化報錯

    在顯示安裝成功MySQL后,初始化mysqld --initialize報錯,錯誤顯示如下 2023-04-03T709:05:28.842980Z O[Warning] TMESTAMP with implicit DEFAULT walue is deprecated.Please use -explicit_lefatlts_for_timestamp server option (see documentation for more details). 2023-04-03T09:05:28.8430327O [Warning] \\\'NO_ZERO_DATE\\\', ‘NO_ZBRO _TN DATE\\\' and \\\'ER

    2024年02月11日
    瀏覽(27)
  • c# 初始化列表,并給列表里面所有的元素進行初始化

    Enumerable.Repeat 方法是用于生成一個包含指定元素重復(fù)若干次的序列。它接受兩個參數(shù),第一個參數(shù)是要重復(fù)的元素,第二個參數(shù)是重復(fù)次數(shù)。 下面是 Enumerable.Repeat 方法的用法和示例:

    2024年02月13日
    瀏覽(25)
  • ORB-SLAM2算法12之單目初始化Initializer

    ORB-SLAM2算法7詳細了解了 System 主類和多線程、

    2024年02月10日
    瀏覽(20)
  • 初始化列表

    初始化列表

    ?在創(chuàng)建對象時,編譯器通過調(diào)用構(gòu)造函數(shù),給對象中各個成員變量一個合適的初始值。 雖然上述構(gòu)造函數(shù)調(diào)用之后,對象中已經(jīng)有了一個初始值,但是不能將其稱為對對象成員變量的初始化,構(gòu)造函數(shù)體中的語句只能將其稱為賦初值,而不能成作初始化。因為 初始化只能進

    2024年02月04日
    瀏覽(20)
  • 初始化列表的使用

    初始化列表的使用

    問題 類中是否可以定義 const 成員? 可以的 下面的類定義是否合法? 如果合法,ci 的值是什么,存儲在哪里? 上面的 Test 類定義是合法的,但是要定義 Test 類對象的時候,編譯器會報錯,提示 const 成員變量 ci 沒初始化 類中的 const 成員 我們對上面的代碼進行編譯,編譯直

    2024年02月09日
    瀏覽(19)
  • 【C++進階知識】04 - 函數(shù)默認實參、默認初始化、initializer_list

    默認實參需要注意以下幾點: (1)函數(shù)默認實參的賦值應(yīng)從右往左,否則編譯報錯,因為參數(shù)入棧應(yīng)該從右往左。 (2)類外的默認實參會使類的非默認構(gòu)造函數(shù)變成默認構(gòu)造函數(shù)。 (3)如果在類中添加了該函數(shù)的該參數(shù)的默認實參,那么在類外再次定義該參數(shù)的默認實參

    2024年02月14日
    瀏覽(17)
  • C++之初始化列表詳細剖析

    C++之初始化列表詳細剖析

    初始化列表:以一個 冒號開始 ,接著是一個以 逗號分隔的數(shù)據(jù)成員列表 ,每個 \\\"成員變量\\\" 后面跟一個 放在括號中的初始值或表達式。 不知道大家有沒有想過這樣一個問題,成員函數(shù)明明可以在函數(shù)內(nèi)部對成員變量進行賦值,那為什么還要搞出初始化列表這個東西呢?這個

    2024年02月06日
    瀏覽(28)
  • C++ | 談?wù)剺?gòu)造函數(shù)的初始化列表

    C++ | 談?wù)剺?gòu)造函數(shù)的初始化列表

    我們知道,對于下面這個類A的成員變量 _a1 和 _a2 屬于【聲明】,還沒有在內(nèi)存中為其開辟出一塊空間以供存放,真正開出空間則是在【定義】的時候,那何時定義呢?也就是使用這個類A去實例化出對象的時候 這個對象的空間被開出來了,難道里面的成員變量就一定開出空間

    2023年04月11日
    瀏覽(29)
  • 【C++奇遇記】構(gòu)造函數(shù) | 初始化列表

    【C++奇遇記】構(gòu)造函數(shù) | 初始化列表

    ?? 博客主頁:博主鏈接 ?? 本文由 M malloc 原創(chuàng),首發(fā)于 CSDN?? ?? 學(xué)習(xí)專欄推薦:LeetCode刷題集 數(shù)據(jù)庫專欄 初階數(shù)據(jù)結(jié)構(gòu) ?? 歡迎點贊 ?? 收藏 ?留言 ?? 如有錯誤敬請指正! ?? 未來很長,值得我們?nèi)Ρ几案篮玫纳? ??本篇文章將講授C++的初始化列表相關(guān)的知識

    2024年02月12日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包