欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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ì)直接將引用替換為引用指向的對象。

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

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

由于在傳遞值時(shí),修改這個(gè)值不會(huì)對原有的數(shù)據(jù)造成影響,而傳遞引用時(shí),修改這個(gè)值會(huì)對修改原有的數(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 修飾指針的指向的對象,第二個(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)我們對容器的遍歷:

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

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

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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++基于遞歸算法解決漢諾塔問題與樹的遍歷功能示例

    C++基于遞歸算法解決漢諾塔問題與樹的遍歷功能示例

    這篇文章主要介紹了C++基于遞歸算法解決漢諾塔問題與樹的遍歷功能,簡單描述了遞歸算法的原理,并結(jié)合實(shí)例形式分析了基于遞歸算法解決漢諾塔問題與數(shù)的遍歷相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • C++設(shè)計(jì)模式之裝飾模式(Decorator)

    C++設(shè)計(jì)模式之裝飾模式(Decorator)

    這篇文章主要為大家詳細(xì)介紹了C++設(shè)計(jì)模式之裝飾模式Decorator的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • C++ Boost Bimap示例詳細(xì)講解

    C++ Boost Bimap示例詳細(xì)講解

    Boost是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱。Boost庫是一個(gè)可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱
    2022-11-11
  • C語言動(dòng)態(tài)內(nèi)存管理的實(shí)現(xiàn)

    C語言動(dòng)態(tài)內(nèi)存管理的實(shí)現(xiàn)

    本文主要介紹了C語言動(dòng)態(tài)內(nèi)存管理的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C語言實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換函數(shù)的實(shí)例詳解

    C語言實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換函數(shù)的實(shí)例詳解

    這篇文章主要介紹了C語言實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換函數(shù)的實(shí)例詳解的相關(guān)資料,這里提供實(shí)現(xiàn)實(shí)例幫助大家實(shí)現(xiàn)改功能,需要的朋友可以參考下
    2017-08-08
  • C語言+win32api寫窗體應(yīng)用程序

    C語言+win32api寫窗體應(yīng)用程序

    本文給大家分享的是個(gè)人使用純C語言結(jié)合win32api制作窗體應(yīng)用程序的代碼,非常的簡單,給需要的小伙伴參考下。
    2016-02-02
  • C++二維數(shù)組中的查找算法示例

    C++二維數(shù)組中的查找算法示例

    這篇文章主要介紹了C++二維數(shù)組中的查找算法,結(jié)合實(shí)例形式分析了C++二維數(shù)組進(jìn)行查找的原理與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-05-05
  • CMake語法及CMakeList.txt簡單使用小結(jié)

    CMake語法及CMakeList.txt簡單使用小結(jié)

    Cmake主要用于開發(fā)跨平臺(tái)的C++項(xiàng)目,本文主要介紹了CMake語法及CMakeList.txt簡單使用小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-05-05
  • 一篇文章帶你入門C++的異常處理

    一篇文章帶你入門C++的異常處理

    C++ 提供了異常機(jī)制,讓我們能夠捕獲運(yùn)行時(shí)錯(cuò)誤,本文就詳細(xì)的介紹了C++異常處理入門,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C語言各類操作符全面講解

    C語言各類操作符全面講解

    C?語言提供了豐富的操作符,有:算術(shù)操作符,移位操作符,位操作符,賦值操作符,單目操作符,關(guān)系操作符,邏輯操作符,條件操作符等。接下了讓我們詳細(xì)了解掌握它
    2022-05-05

最新評論