C 11的auto和decltype關鍵字

2021-06-28 18:28:53 字數 670 閱讀 4689

今天mayuyu要介紹c++11中兩個重要的關鍵字,即autodecltype。實際上在c++98中,已經就有了auto關鍵字,只不過在c++98中auto表示的是臨時變數的語義,而在c++11中auto表示自動型別推導,如下

auto關鍵字可以從表示式中推導出變數的型別,這樣就大大簡化了程式設計人員的工作。而且auto是在編譯時對變數進行了型別推導,所以不會對程式的效率造成影響,另外auto也不會對編譯速度造成太大影響,因為編譯時本身也要右側推導後判斷是否與左側匹配。

另外auto在模板程式設計中也有比較好的效果,可以使得程式更加簡潔。

接下來再繼續介紹另乙個比較重要的關鍵字,decltype。用法如下

decltype是根據變數推導獲取出變數的型別。

更多資料:

C 11中的auto陷阱

c 11中引入的auto關鍵字自動推導型別特性,可能是最方便也最容易理解的特性了。然而,即使是這個簡單特性,也有陷阱,需要我們使用時注意。1 引用型別被推導為非引用型別 例如 foo void arg 上面的 中big會被推導為mybigclass型別,而不是mybigclass 型別,從而導致拷貝...

c 11新特性之auto

在早期版本中,auto關鍵字用來宣告具有自動儲存器的區域性變數,auto關鍵字很少被使用,除了靜態變數之外,其它的變數預設是auto的。因此,在c 11中,刪除了原有的功能,並對其重新設計,增加了auto的型別推導功能。template double add t1 a,t2 b int main i...

C 11語法auto推導返回

c 不允許直接推導auto返回型別,如果要用auto返回型別,需要用decltype 宣告尾返回型別 如下面 template auto add a x,b y decltype x y 呼叫方式還是和普通的模板元函式一樣 std cout add 5,8 std endl std cout add...