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屬性
參考
C 11 auto型別推斷和decltype
1.auto型別推斷 a.引入原因 程式設計時,經常需要將表示式的值賦給變數,這就要求我們在申明變數的時候,明確知道表示式的型別,然而要做到這一點並不容易,於是引入auto讓編譯器幫我們去做型別分析。b.使用注意事項const int const i 1,const ref const i auto...
c 11 auto 型別說明符詳解
當使用 auto 自動推斷型別時,需要注意以下幾點 一 必須要有初始值 乙個顯而易見的道理,auto 表示編譯器根據初始值型別推斷宣告變數的型別,因此必須要有初始值。二 一條宣告語句只能有一種基本型別 auto i 0,p i 正確,基本型別是int auto sz 0,pi 3.14 錯誤,由sz...
C 11 14 自動型別推導 auto
從c 11起,auto關鍵字不再表示儲存型別,而是成為了隱式型別定義關鍵字,其作用是讓編譯器在編譯期 便自動推斷出變數的型別。例如 auto a 1 a 為 int 型變數 auto ptr new auto 1 auto 1 int 1 ptr 為 int 型指標變數 const auto q a...