C++11 auto自動型別推導
阿新 • • 發佈:2020-06-29
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屬性