C 11 auto自動型別推導

2022-06-20 02:51:07 字數 914 閱讀 6029

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...