C 11 自動型別推斷和型別獲取

2021-06-21 10:34:59 字數 1020 閱讀 9933

1.自動型別判斷

編譯器能夠在乙個變數的宣告時候推斷出它的型別,

那麼你就能夠用auto

關鍵字來作為他們的型別。

接觸過泛型程式設計或者api程式設計的人大概可以猜出自動型別推斷是做什麼用的了:幫你省去大量冗長的型別宣告語句。

如下:vector vec;

vector::iterator itr = vec.iterator();

可以這樣寫:vector vec;

auto itr = vec.iterator();

例如:宣告函式:int temp(int a, double b);

可以這樣寫:auto temp(int a, double b) -> int;

後置返回值型別可以有很多用處。比如有下列的類定義:

class person ;

void setpersontype (persontype person_type);

persontype getpersontype ();

private:

persontype _person_type; };

那麼在定義getpersontype函式的時候我們得這麼寫:

person::persontype person::getpersontype ()

因為函式所在的類person是宣告在函式返回值之後的,所以在寫返回值的時候編譯器並不知道這個函式是在哪個類裡面。由於persontype是person類的內部宣告的列舉,所以在看到persontype的時候,編譯器是找不到這個型別的。所以你就得在persontype前面加上person::,告訴編譯器這個型別是屬於person的。這看起來有點麻煩是吧。當你使用新的返回值語法的時候呢就可以這麼寫:

auto person::getpersontype () -> persontype

2.型別獲取語句(decltype):

int x = 3;

decltype(x) y = x; 

y為int型別的變數並用x初始化

C 11新特性 自動型別推斷和型別獲取

當編譯器能夠在乙個變數的宣告時候就推斷出它的型別,那麼你就能夠用auto關鍵字來作為他們的型別 cpp view plain copy auto x 1 編譯器當然知道x是integer型別的。所以你就不用int了。接觸過泛型程式設計或者api程式設計的人大概可以猜出自動型別推斷是做什麼用的了 幫你...

c 11 型別推斷

當編譯器能夠在乙個變數的宣告時候就推斷出它的型別,那麼你就能夠用auto關鍵字來作為他們的型別 cpp view plain copy auto x 1 編譯器當然知道x是integer型別的。所以你就不用int了。接觸過泛型程式設計或者api程式設計的人大概可以猜出自動型別推斷是做什麼用的了 幫你...

初窺C 11 自動型別推導與型別獲取

auto 話說c語言還處於k r時代,也有auto a 1 的寫法。中文譯過來叫自動變數,跟c 11的不同,c語言的auto a 1 相當與 auto int a 1 語句。而c 11的auto是有著嚴格的型別推導出來的。以前是這麼寫 int a 1 現在,編譯器知道a是int型了。所以可以這麼寫 ...