您好,登錄后才能下訂單哦!
這篇文章主要介紹“C++ auto自動(dòng)類(lèi)型推導(dǎo)規(guī)則是什么及怎么使用”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“C++ auto自動(dòng)類(lèi)型推導(dǎo)規(guī)則是什么及怎么使用”文章能幫助大家解決問(wèn)題。
(1) 引用不是類(lèi)型,因此auto不能推斷出引用
int a = 1; int& b = a;// b-> int& 用->表示推導(dǎo)出類(lèi)型,下同 auto c = b;// c->int
(2)auto 在推斷引用的類(lèi)型時(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)鍵字推斷類(lèi)型時(shí),如果沒(méi)有引用符號(hào),那么會(huì)忽略值類(lèi)型的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),那么值類(lèi)型的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ù)類(lèi)型: | auto被推導(dǎo)的類(lèi)型: | |
1 | auto *a = &x; | a 被推導(dǎo)為 :int * | auto 推導(dǎo)為: int |
2 | auto b = &x; | b 被推導(dǎo)為: int* | auto 推導(dǎo)為: int * |
3 | auto &c = x ; | c 被推導(dǎo)為: int& | auto 推導(dǎo)為: int |
4 | auto d = c; | d 被推導(dǎo)為: int | auto 推導(dǎo)為: int |
5 | const auto e= x; | e 被推導(dǎo)為: const int | auto 推導(dǎo)為: int |
6 | auto f = e; | f 被推導(dǎo)為: int | auto 推導(dǎo)為: int |
7 | const auto& g = x; | g 被推導(dǎo)為: const int& | auto 推導(dǎo)為: int |
8 | auto& h = g; | h 被推導(dǎo)為:const int& | auto 推導(dǎo)為: int |
注意: auto聲明的變量必須馬上初始化,因?yàn)樵诰幾g階段編譯器就將其類(lèi)型推導(dǎo)出來(lái)。
auto a;error
(1)用于推導(dǎo)容器的迭代器:
原本不使用類(lèi)型推導(dǎo)我們對(duì)容器的遍歷:
for(vector<int>::iterator it = vec.begin(); it! = vec.end(); it++) { cout<<"vec:"<< *it <<endl; }
使用auto自動(dòng)類(lèi)型推導(dǎo)后對(duì)容器的遍歷:
for(auto it = vec.begin(); it! = vec.end(); it++ ) { cout>>"vec:"<<*it<<endl; }
是不是清爽了很多,利用auto自動(dòng)類(lèi)型推導(dǎo),就不需要寫(xiě)一堆迭代器類(lèi)型了。
(2)書(shū)寫(xiě)泛性函數(shù)
不知道程序使用時(shí),傳入的參數(shù)是什么類(lèi)型時(shí),用auto可以為我們節(jié)省不少工作量。
(3)用于函數(shù)的返回值類(lèi)型后置:和decltypr配合使用。
關(guān)于“C++ auto自動(dòng)類(lèi)型推導(dǎo)規(guī)則是什么及怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。