1. 程式人生 > 實用技巧 >C++11 auto自動型別推導

C++11 auto自動型別推導

1.auto型別推導

auto x  =5;			//正確,x是int型別
auto pi = new auto(1);		//正確,批是int*
const auto* v = &x, u = 6;	//正確,v是const int*型別,u是const int
static auto y = 0.0;		//正確,y是double型別
auto int r;			//錯誤,auto不再表示儲存型別的指示符
auto s;				//錯誤,auto無法推匯出s的型別(必須馬上初始化)

auto並不能代表一個實際的型別宣告(上面s編譯錯誤),只是一個型別宣告的“佔位符”。使用auto宣告的變數必須馬上初始化,以讓編譯器推斷出它的型別,並且在編譯時將auto佔位符替換為真正的型別。

2.auto推導規則

int x = 0;
auto *a = &x;		//a->int*,auto被推導為int
auto b = &x;		//b->int*,auto被推導為int*
auto &c = x;		//c->int&,auto被推導為int
auto d = c;		//d->int, auto被推導為int
 
const auto e = x;		//e->const int
auto f = e;			//f->int
 
const auto& g = x;		//e->const int&
auto& h = g;			//g->const int&

(1)當不宣告為指標或是引用時,auto的推導結果和初始化表示式拋棄引用和const屬性限定符後的型別一致
(2)當宣告為指標或是引用時,auto的推導結果將保持初始化表示式的const屬性

參考
https://blog.csdn.net/m_buddy/article/details/72828576