亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++11系列學(xué)習(xí)之列表初始化

 更新時間:2022年04月25日 09:49:18   作者:小杰編程  
這篇文章主要介紹了C++11系列學(xué)習(xí)之列表初始化,標(biāo)準(zhǔn)初始化方式太過繁雜,限制偏多,因此在新標(biāo)準(zhǔn)中統(tǒng)一了初始化方,為了讓初始化具有確定的效果,于是提出了列表初始化概念,下文我們就一起來學(xué)習(xí)該詳細(xì)內(nèi)容介紹吧

前言:

由于舊標(biāo)準(zhǔn)初始化方式太過繁雜,限制偏多,因此在新標(biāo)準(zhǔn)中統(tǒng)一了初始化方式,為了讓初始化具有確定的效果,于是提出了列表初始化概念。

舊標(biāo)準(zhǔn)初始化方式

普通數(shù)組初始化:

int i_arr[3] = {1, 2, 3}

POD類型初始化(即plain old data類型,可以直接使用memcpy復(fù)制的對象):

struct A
{
int x;
struct B
{
int i;
int j;
} b;
} a = {1, {2, 3}};

拷貝初始化:

int i = 0;
class Foo
{
public:
Foo(int) {}
} foo = 123

直接初始化:

int j(0)
Foo bar(123)

C++11標(biāo)準(zhǔn)初始化方式

C++11標(biāo)準(zhǔn)中{}的初始化方式是對聚合類型的初始化,是以拷貝的形式來賦值的。

C++11標(biāo)準(zhǔn)中對非聚合類型則以構(gòu)造函數(shù)來進(jìn)行初始化的。

聚合類型:

  • 類型是一個普通的數(shù)組
  • 類型是一個類,

并且滿足以下條件:

  • 無用戶自定義的構(gòu)造函數(shù)
  • 無私有或保護(hù)的非靜態(tài)數(shù)據(jù)成員
  • 無基類
  • 無虛函數(shù)
  • 不能有 { } 和 = 直接初始化的非靜態(tài)數(shù)據(jù)成員

初始化列表技術(shù)細(xì)節(jié)

觀察下面這兩個:

int arr[] {1, 2, 3}
std::set<int> ss = {1, 2, 3}

之所以可以實現(xiàn)STL中不指定個數(shù)進(jìn)行初始化,依賴的就是與i個輕量級的類模板,也是C++11中的新特性std::initializer_listinitializer_list使用

class FooVector
{
std::vector<int> content_;
public:
FooVector(std::initializer_list<int> list){ //重要技術(shù)點
for(auto it = list.begin(); it != list.end(); ++it){
content_.back(*it)
}
}
}
FooVector foo_1 = {1, 2, 3, 4, 5} //不僅可以這樣
FooVector foo_2({1, 2, 3, 4, 5}) //還可以傳一個同種類型數(shù)據(jù)集合

initializer_list的特點:

  • 它是一個輕量級的容器類型,內(nèi)部定義了iterator等容器必需的概念
  • 對于std::initializer_list來說,它可以接收任意長度的初始化列表,但要求元素類型必須是同種類型T(或者可轉(zhuǎn)換為T)
  • 它有3個成員接口:size () 、 begin() 、end()
  • 它只能被整體初始化或賦值

注意:std::initializer_list 是非常高效的,因此內(nèi)部并不負(fù)責(zé)保存初始化列表中的元素的拷貝,而是僅僅存儲列表中元素的引用!因此不能用來返回臨時變量!

避免類型收窄:

C++有隱式類型轉(zhuǎn)換的特性,比如將一個浮點數(shù)賦值給一個整數(shù),精度會丟失,小數(shù)點后會被直接截斷。初始化列表可以幫助避免隱式類型轉(zhuǎn)換。因為其不允許這種轉(zhuǎn)換發(fā)生。

但是也會隨著編譯器的不同而不同:

float ff = 1.2
float ff = {1.2}

在gcc4.8下沒有警告和錯誤,但Microsoft Visual C++2013中,收到編譯錯誤。因為1.2默認(rèn)是double類型,由double轉(zhuǎn)換成float會發(fā)生隱式類型轉(zhuǎn)換,但是并沒有發(fā)生精度損失

總結(jié)

C++11新增的初始化方式,為程序的編寫帶來了很多的便利,這也是新標(biāo)準(zhǔn)秉承的思想和改進(jìn)的方向。

到此這篇關(guān)于C++11系列學(xué)習(xí)之列表初始化的文章就介紹到這了,更多相關(guān)C++11列表初始化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 將CString字符串輸入轉(zhuǎn)化成整數(shù)的實現(xiàn)方法

    將CString字符串輸入轉(zhuǎn)化成整數(shù)的實現(xiàn)方法

    下面小編就為大家?guī)硪黄獙String字符串輸入轉(zhuǎn)化成整數(shù)的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • 深入理解C++中public、protected及private用法

    深入理解C++中public、protected及private用法

    這篇文章主要介紹了C++中public、protected及private用法,對于C++面向?qū)ο蟪绦蛟O(shè)計來說是非常重要的概念,需要的朋友可以參考下
    2014-08-08
  • 基于QT5的文件讀取程序的實現(xiàn)

    基于QT5的文件讀取程序的實現(xiàn)

    本文主要介紹了基于QT5的文件讀取程序的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C語言分裝實現(xiàn)三子棋游戲詳解

    C語言分裝實現(xiàn)三子棋游戲詳解

    這篇文章主要為大家詳細(xì)介紹了C語言分裝實現(xiàn)三子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C/C++實現(xiàn)雙路快速排序算法原理

    C/C++實現(xiàn)雙路快速排序算法原理

    這篇文章主要為大家詳細(xì)介紹了C/C++實現(xiàn)雙路快速排序算法原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 200行C語言代碼實現(xiàn)簡易三子棋游戲

    200行C語言代碼實現(xiàn)簡易三子棋游戲

    三子棋(井字棋)我們的童年或多或少都體驗過這個游戲的樂趣,本子隨手一畫就是一局游戲的開始,下面這篇文章主要給大家介紹了關(guān)于200行C語言代碼實現(xiàn)簡易三子棋游戲的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • Qt串口通信開發(fā)之QSerialPort模塊簡單使用方法與實例

    Qt串口通信開發(fā)之QSerialPort模塊簡單使用方法與實例

    這篇文章主要介紹了Qt串口通信開發(fā)之QSerialPort模塊簡單使用方法與實例,需要的朋友可以參考下
    2020-03-03
  • C語言位段(位域)機(jī)制結(jié)構(gòu)體的特殊實現(xiàn)及解析

    C語言位段(位域)機(jī)制結(jié)構(gòu)體的特殊實現(xiàn)及解析

    這篇文章主要為大家介紹了C語言位段位域機(jī)制結(jié)構(gòu)體的特殊實現(xiàn)講解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-02-02
  • C++中set/multiset容器詳解(附測試用例與結(jié)果圖)

    C++中set/multiset容器詳解(附測試用例與結(jié)果圖)

    set/multiset屬于關(guān)聯(lián)式容器,底層結(jié)構(gòu)是用二叉樹實現(xiàn),下面這篇文章主要給大家介紹了關(guān)于C++中set/multiset容器的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • 淺析C++中的多線程編程

    淺析C++中的多線程編程

    這篇文章主要為大家詳細(xì)介紹了C++中的多線程編程,包括創(chuàng)建線程、同步線程、傳遞數(shù)據(jù)給線程以及異常處理等方面,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10

最新評論