程式設計時,需要把表示式的值賦給變數,這就要求在宣告變數時清楚知道表示式的型別。為了解決這個問題,c++11引入auto型別說明符,用它就能讓編譯器替我們去分析表示式所屬的型別。auto讓編譯器通過初值來推算變數的型別。因此,auto定義的變數必須有初始值。
auto能在一句中定義多個變數,但是這幾個變數的初始值型別必須一致。
注意:使用引用其實是使用引用的物件,特別是當引用被用作初始值時,真正參與初始化的其實是引用物件的值。此時編譯器以引用物件的型別作為auto的型別。
int i = 0, &r = i;
auto a = r; //a是乙個整數(r是i的別名,而i是乙個整數)
同時,auto一般會忽略頂層const,同時底層const會保留下來
const int ci = i, &cr = ci;
auto b = ci; //b是乙個整數(ci的頂層const特性被忽略掉了)
auto c = cr; //c是乙個整數(cr是ci的別名,ci本身是乙個頂層const)
auto d = &i; //d是乙個整型指標(整數的位址就是指向整數的指標)
auto e = &ci; //e是乙個指向整數常量的指標(對常量物件取位址是一種底層const)
如果希望推斷出的auto型別是乙個頂層const,需要明確指出:
const auto f = ci; //ci的推演型別是int,f是const int
#include#include #include using namespace std;
int main()
; for (auto d : arr)
cout << d << endl;
return 0;
}
for迴圈把變數c和str聯絡了起來。通過使用auto關鍵字,讓編譯器來決定c的型別(此處為char)。每次迭代,str的下乙個字元被拷貝給c。#include#include #include using namespace std;
int main()
auto型別說明符
c 11新標準引入了auto型別說明符 用它能讓編譯器替我們分析表示式所屬的型別 auto讓編譯器通過初始值來推算出標量的型別。顯然auto定義的變數必須有初始值 auto item vall val2 item的型別通過val2和val1的相加的結果得出 使用auto也能在一條語句中宣告多個變數 ...
型別說明符auto和decltype
auto和decltype都是c 11標準提出來的型別說明符,都可以通過編譯器自動推斷出表示式的型別,從而用這個型別定義新的變數,如 double v1 9.8,v2 1.3 auto v3 v1 v2 decltype v1 v2 v4 我們可以通過typeid name 來檢視變數的型別,需要加...
c 11 auto 型別說明符詳解
當使用 auto 自動推斷型別時,需要注意以下幾點 一 必須要有初始值 乙個顯而易見的道理,auto 表示編譯器根據初始值型別推斷宣告變數的型別,因此必須要有初始值。二 一條宣告語句只能有一種基本型別 auto i 0,p i 正確,基本型別是int auto sz 0,pi 3.14 錯誤,由sz...