C 11的decltype關鍵字

2022-07-28 12:48:28 字數 626 閱讀 9956

decltype關鍵字和auto有異曲同工之處

有時我們希望從表示式的型別推斷出要定義的變數型別,但是不想用該表示式的值初始化變數(如果要初始化就用auto了)。為了滿足這一需求,c++11新標準引入了decltype型別說明符,它的作用是選擇並返回運算元的資料型別,在此過程中,編譯器分析表示式並得到它的型別,卻不實際計算表示式的值。

int getsize();

int main(void)

還有很多用法,此處暫不深究。

decltypeauto都可以用來推斷型別,但是二者有幾處明顯的差異:

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這個成員函式...