



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第C++11系列學習之列表初始化目錄前言:舊標準初始化方式C++11標準初始化方式初始化列表技術細節(jié)總結
前言:
由于舊標準初始化方式太過繁雜,限制偏多,因此在新標準中統(tǒng)一了初始化方式,為了讓初始化具有確定的效果,于是提出了列表初始化概念。
舊標準初始化方式
普通數(shù)組初始化:
inti_arr[3]={1,2,3}
POD類型初始化(即plainolddata類型,可以直接使用memcpy復制的對象):
structA
intx;
structB
inti;
intj;
}a={1,{2,3}};
拷貝初始化:
inti=0;
classFoo
public:
Foo(int){}
}foo=123
直接初始化:
intj(0)
Foobar(123)
C++11標準初始化方式
C++11標準中{}的初始化方式是對聚合類型的初始化,是以拷貝的形式來賦值的。
C++11標準中對非聚合類型則以構造函數(shù)來進行初始化的。
聚合類型:
類型是一個普通的數(shù)組類型是一個類,
并且滿足以下條件:
無用戶自定義的構造函數(shù)無私有或保護的非靜態(tài)數(shù)據(jù)成員無基類無虛函數(shù)不能有{}和=直接初始化的非靜態(tài)數(shù)據(jù)成員
初始化列表技術細節(jié)
觀察下面這兩個:
intarr[]{1,2,3}
std::setintss={1,2,3}
之所以可以實現(xiàn)STL中不指定個數(shù)進行初始化,依賴的就是與i個輕量級的類模板,也是C++11中的新特性std::initializer_listinitializer_list使用
classFooVector
std::vectorintcontent_;
public:
FooVector(std::initializer_listintlist){//重要技術點
for(autoit=list.begin();it!=list.end();++it){
content_.back(*it)
FooVectorfoo_1={1,2,3,4,5}//不僅可以這樣
FooVectorfoo_2({1,2,3,4,5})//還可以傳一個同種類型數(shù)據(jù)集合
initializer_list的特點:
它是一個輕量級的容器類型,內(nèi)部定義了iterator等容器必需的概念對于std::initializer_list來說,它可以接收任意長度的初始化列表,但要求元素類型必須是同種類型T(或者可轉換為T)它有3個成員接口:size()、begin()、end()它只能被整體初始化或賦值
注意:std::initializer_list是非常高效的,因此內(nèi)部并不負責保存初始化列表中的元素的拷貝,而是僅僅存儲列表中元素的引用!因此不能用來返回臨時變量!
避免類型收窄:
C++有隱式類型轉換的特性,比如將一個浮點數(shù)賦值給一個整數(shù),精度會丟失,小數(shù)點后會被直接截斷。初始化列表可以幫助避免隱式類型轉換。因為其不允許這種轉換發(fā)生。
但是也會隨著編譯器的不同而不同:
floatff=1.2
floatff={1.2}
在gcc4.8下沒有警告和錯誤,但MicrosoftVisualC++2013中,收到編譯錯誤。因為1.2默認是double類型,由double轉換成float會發(fā)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 組織部門面試題目及答案
- 有趣的靈魂考試題及答案
- 2025年現(xiàn)代企業(yè)運營與管理考試題及答案
- 景觀英文面試題目及答案
- 家政職稱考試題及答案
- 文秘公務員試題及答案
- 2025年健康管理師職業(yè)資格考試題及答案
- jdbc考試題及答案
- 國貿(mào)試題及答案
- 企業(yè)通訊工具租賃與使用協(xié)議
- 2024秋期國家開放大學《可編程控制器應用實訓》一平臺在線形考(形成任務1)試題及答案
- 古詩詞誦讀《臨安春雨初霽》課件+2023-2024學年統(tǒng)編版高中語文選擇性必修下冊
- 護理核心制度搶救制度
- 廣東省東莞市(2024年-2025年小學三年級語文)人教版期末考試(下學期)試卷(含答案)
- 電子化學品工廠設計規(guī)范(征求意見稿)
- 2024年西北工業(yè)大學附中丘成桐少年班初試數(shù)學試題真題(含答案詳解)
- 初中物理神奇的電磁波+物理教科版九年級下冊
- GB/T 718-2024鑄造用生鐵
- 2024-2029年中國無溶劑復合機行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報告
- 汽車維修項目實施方案
- 競技體育人才隊伍建設方案
評論
0/150
提交評論