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型了。所以可以這麼寫 ...