decltype關鍵字和auto有異曲同工之處
有時我們希望從表示式的型別推斷出要定義的變數型別,但是不想用該表示式的值初始化變數(如果要初始化就用auto了)。為了滿足這一需求,c++11新標準引入了decltype型別說明符,它的作用是選擇並返回運算元的資料型別,在此過程中,編譯器分析表示式並得到它的型別,卻不實際計算表示式的值。
int getsize();
int main(void)
還有很多用法,此處暫不深究。
decltype
和auto
都可以用來推斷型別,但是二者有幾處明顯的差異:
auto忽略頂層const,decltype保留頂層const;
對引用操作,auto推斷出原有型別,decltype推斷出引用;
對解引用操作,auto推斷出原有型別,decltype推斷出引用;
auto推斷時會實際執行,decltype不會執行,只做分析。
總之在使用中過程中和const、引用和指標結合時需要特別小心。
C 11特性 decltype關鍵字
我們之前使用的typeid運算子來查詢乙個變數的型別,這種型別查詢在執行時進行。rtti機制為每乙個型別產生乙個type info型別的資料,而typeid查詢返回的變數相應type info資料,通過name成員函式返回型別的名稱。同時在c 11中typeid還提供了hash code這個成員函式...
C 11基礎 decltype關鍵字
1.decltype關鍵字獲取表示式的型別 int x 0 decltype x y 1 y int2.推導規則decltype exp int n 0 volatile const int x n decltype n a n a int decltype x b n b const volati...
C 11特性 decltype關鍵字
我們之前使用的typeid運算子來查詢乙個變數的型別,這種型別查詢在執行時進行。rtti機制為每乙個型別產生乙個type info型別的資料,而typeid查詢返回的變數相應type info資料,通過name成員函式返回型別的名稱。同時在c 11中typeid還提供了hash code這個成員函式...