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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

int x = 10;

 推導(dǎo)表達式:推導(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聲明的變量必須馬上初始化,因為在編譯階段編譯器就將其類型推導(dǎo)出來。

auto a;error

二.auto的使用時機

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

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

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

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

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

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

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

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

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

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

到此這篇關(guān)于C++ auto自動類型推導(dǎo)規(guī)則和使用詳解的文章就介紹到這了,更多相關(guān)C++自動類型推導(dǎo)內(nèi)容請搜索腳本之家以前的文章或繼續(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立方體

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

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

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

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

    這篇文章主要為大家詳細介紹了如何利用C++實現(xiàn)將s16le的音頻流轉(zhuǎn)換為float類型,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    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語言實現(xiàn)學(xué)生考勤系統(tǒng)

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

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

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

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

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

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

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

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

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

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

最新評論

天台县| 乳源| 阿荣旗| 介休市| 万宁市| 荣成市| 鹤山市| 海丰县| 和平区| 齐齐哈尔市| 海晏县| 乐山市| 阳信县| 桦川县| 庆云县| 闽清县| 普兰店市| 莱芜市| 仙游县| 榆社县| 和田县| 博客| 堆龙德庆县| 祁连县| 广宁县| 浦北县| 泰宁县| 通榆县| 迁安市| 海安县| 遂宁市| 许昌市| 泉州市| 荔浦县| 资兴市| 剑川县| 清涧县| 兰坪| 满城县| 安新县| 宁海县|