最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ auto自動(dòng)類型推導(dǎo)規(guī)則和使用詳解

 更新時(shí)間:2022年08月17日 16:17:44   作者:頑張先生  
C++11 賦予 auto 關(guān)鍵字新的含義,使用它來做自動(dòng)類型推導(dǎo)。也就是說,使用了 auto 關(guān)鍵字以后,編譯器會(huì)在編譯期間自動(dòng)推導(dǎo)出變量的類型,這樣我們就不用手動(dòng)指明變量的數(shù)據(jù)類型了

一.auto推導(dǎo)規(guī)則4點(diǎn)

(1) 引用不是類型,因此auto不能推斷出引用

int a = 1;
int& b = a;// b-> int&  用->表示推導(dǎo)出類型,下同
auto c = b;// c->int  

(2)auto 在推斷引用的類型時(shí),會(huì)直接將引用替換為引用指向的對(duì)象。

引用不是對(duì)象,任何引用的地方都可以直接替換為引用指向的對(duì)象。

int a = 10;
const int& b = a ;// b-> const int&
auto c = b;  //  c-> int 
//相當(dāng)于 auto c = a; 

由于在傳遞值時(shí),修改這個(gè)值不會(huì)對(duì)原有的數(shù)據(jù)造成影響,而傳遞引用時(shí),修改這個(gè)值會(huì)對(duì)修改原有的數(shù)據(jù)。

(3)auto 關(guān)鍵字推斷類型時(shí),如果沒有引用符號(hào),那么會(huì)忽略值類型的const修飾,而保留修飾指向?qū)ο蟮腸onst

const int i =1;
auto j = i;//j-> int
int a ;
const int* const pi = &a;//第一個(gè)const 修飾指針的指向的對(duì)象,第二個(gè)const修飾pi指向的值。
                         //會(huì)忽略第二個(gè)const。
auto pi2 = pi;  // pi2 -> int* const 

(4)如果有引用符號(hào),那么值類型的const和指向的const都會(huì)保留。

int i = 1;
const int* const j = &i;
auto &k = j; //a->const int const &

具體推導(dǎo)例子:

int x = 10;

 推導(dǎo)表達(dá)式:推導(dǎo)出變量數(shù)據(jù)類型:auto被推導(dǎo)的類型:
1auto  *a = &x;     a   被推導(dǎo)為 :int *auto 推導(dǎo)為: int
2auto  b =  &x;     b  被推導(dǎo)為: int*auto 推導(dǎo)為: int *
3auto &c = x ;     c  被推導(dǎo)為:   int&auto 推導(dǎo)為: int
4auto d = c;     d 被推導(dǎo)為:  intauto 推導(dǎo)為: int
5const auto e= x;     e 被推導(dǎo)為: const intauto 推導(dǎo)為:    int
6auto f = e;     f 被推導(dǎo)為: intauto 推導(dǎo)為:    int
7const auto& g = x;     g 被推導(dǎo)為: const int&auto 推導(dǎo)為:    int
8auto& h = g;      h 被推導(dǎo)為:const int&auto 推導(dǎo)為:    int

注意: auto聲明的變量必須馬上初始化,因?yàn)樵诰幾g階段編譯器就將其類型推導(dǎo)出來。

auto a;error

二.auto的使用時(shí)機(jī)

(1)用于推導(dǎo)容器的迭代器:

原本不使用類型推導(dǎo)我們對(duì)容器的遍歷:

for(vector<int>::iterator it = vec.begin(); it! = vec.end(); it++)
{
    cout<<"vec:"<< *it <<endl;
}

使用auto自動(dòng)類型推導(dǎo)后對(duì)容器的遍歷:

for(auto it = vec.begin(); it! = vec.end(); it++ )
{
    cout>>"vec:"<<*it<<endl;
}

是不是清爽了很多,利用auto自動(dòng)類型推導(dǎo),就不需要寫一堆迭代器類型了。

(2)書寫泛性函數(shù)

不知道程序使用時(shí),傳入的參數(shù)是什么類型時(shí),用auto可以為我們節(jié)省不少工作量。

(3)用于函數(shù)的返回值類型后置:

和decltypr配合使用,在后文講述。

到此這篇關(guān)于C++ auto自動(dòng)類型推導(dǎo)規(guī)則和使用詳解的文章就介紹到這了,更多相關(guān)C++自動(dòng)類型推導(dǎo)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++中用指向數(shù)組的指針作函數(shù)參數(shù)

    C++中用指向數(shù)組的指針作函數(shù)參數(shù)

    多維數(shù)組名作為函數(shù)參數(shù)傳遞:在二維數(shù)組中,數(shù)組名a是指向首行a[0]的指針,也就是說a=&a[0]; a[0]是指向首元素a[0][0]的指針,也就是說a[0]=&a[0][0]
    2013-10-10
  • Qt使用QPainter繪制3D立方體

    Qt使用QPainter繪制3D立方體

    這篇文章主要為大家詳細(xì)介紹了Qt使用QPainter繪制3D立方體,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C++命名空間namespace的介紹與使用

    C++命名空間namespace的介紹與使用

    今天小編就為大家分享一篇關(guān)于C++命名空間namespace的介紹與使用,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C++實(shí)現(xiàn)將s16le的音頻流轉(zhuǎn)換為float類型

    C++實(shí)現(xiàn)將s16le的音頻流轉(zhuǎn)換為float類型

    這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)將s16le的音頻流轉(zhuǎn)換為float類型,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-04-04
  • 詳解C++17中類模板參數(shù)推導(dǎo)的使用

    詳解C++17中類模板參數(shù)推導(dǎo)的使用

    自C++17起就通過使用類模板參數(shù)推導(dǎo),只要編譯器能根據(jù)初始值推導(dǎo)出所有模板參數(shù),那么就可以不指明參數(shù),下面我們就來看看C++17中類模板參數(shù)推導(dǎo)的具體使用吧
    2024-03-03
  • C語言實(shí)現(xiàn)學(xué)生考勤系統(tǒng)

    C語言實(shí)現(xiàn)學(xué)生考勤系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)學(xué)生考勤系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++獲取GPU顯卡信息的示例代碼

    C++獲取GPU顯卡信息的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何使用C++獲取GPU顯卡信息,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下
    2024-02-02
  • C語言冷門知識(shí)之你可能沒聽過的柔性數(shù)組

    C語言冷門知識(shí)之你可能沒聽過的柔性數(shù)組

    柔性數(shù)組(Flexible Array)是引入的一個(gè)新特性,它允許你在定義結(jié)構(gòu)體時(shí)創(chuàng)建一個(gè)空數(shù)組,而這個(gè)數(shù)組的大小可以在程序運(yùn)行的過程中根據(jù)你的需求進(jìn)行更改特別注意的一點(diǎn)是:這個(gè)空數(shù)組必須聲明為結(jié)構(gòu)體的最后一個(gè)成員,并且還要求這樣的結(jié)構(gòu)體至少包含一個(gè)其他類型的成員
    2021-10-10
  • C++初始化函數(shù)列表詳細(xì)解析

    C++初始化函數(shù)列表詳細(xì)解析

    C++可以定義引用類型的成員變量,引用類型的成員變量必須在構(gòu)造函數(shù)的初始化列表中進(jìn)行初始化
    2013-09-09
  • OpenCV提取圖像中圓線上的數(shù)據(jù)具體流程

    OpenCV提取圖像中圓線上的數(shù)據(jù)具體流程

    在對(duì)圖像進(jìn)行處理時(shí),經(jīng)常會(huì)要提取出圖像中某條直線、圓線或者ROI區(qū)域內(nèi)的感興趣數(shù)據(jù),進(jìn)行重點(diǎn)關(guān)注。本文主要介紹了利用OpenCV獲取圖像中圓線上的數(shù)據(jù),需要的可以參考一下
    2021-11-11

最新評(píng)論

娱乐| 平顶山市| 波密县| 南郑县| 忻州市| 汝州市| 大新县| 灵川县| 万年县| 岳阳县| 恩施市| 肥城市| 徐汇区| 河间市| 贡嘎县| 施秉县| 肇庆市| 涟源市| 宁德市| 虹口区| 施秉县| 阿图什市| 堆龙德庆县| 西贡区| 达孜县| 九台市| 黄龙县| 开化县| 巫溪县| 和顺县| 尉氏县| 平罗县| 靖安县| 镇原县| 友谊县| 鹤山市| 普格县| 卢氏县| 木里| 红桥区| 专栏|