C 隱式推導 auto關鍵詞

2021-10-09 14:22:23 字數 1178 閱讀 9543

總述

c++中有乙個關鍵字,它不進行顯式宣告,而進行隱式推導,auto可以在宣告變數時根據變數初始值的型別自動為此變數選擇匹配的型別。c++語言類似的關鍵字還有decltype。

如何評價 c++ 11 auto 關鍵字?

既然auto關鍵字可以用來做型別推斷,使得c++在使用auto時更像是在用動態型別語言。

既然auto能幫我們偷很多懶,那平時寫c++還有必要像之前一樣顯式宣告型別嗎?最佳實踐是如何,應當徹底改變之前的c++習慣盡可能大量地使用auto,還是在什麼樣的特定的情形下才使用auto?

知乎問答

知乎上有這麼一條問題很有意思,大家對於auto使用有很多的討論,接下來我就一點點解開auto的神秘面紗,讓大家來進行評判auto。

auto f = 3.14;  //doubleauto s("hello");  //const char*auto z = new auto(9);  //int *
從上面可以看到,我們宣告不需要定義顯性的型別,只需要用auto定義進行自動推導即可。

程式設計時經常需要把表示式的值賦給變數,這就要求宣告變數的時候,我們可以清楚的知道表示式的型別。然而很多時候名字空間、模板成為型別的一部分,導致了程式設計師在複雜型別的初始化宣告中如履薄冰,所以c++11中引入了auto型別說明符,用它就可以讓編譯器替我們分析表示式所屬的型別。

舉乙個經常使用的容器的iterator的例子:

#include#includevoid test(std::vector&vs)for (auto   i : list)}
2.儲存lambda表示式型別的變數宣告:

auto ptr = (double x);//型別為std::function函式物件
3.函式的返回型別(auto在c++14可以作為函式返回型別)

templateauto fun(t x,u y)

c 中的隱式對話和隱式關鍵詞

這是乙個簡單的類的宣告和呼叫 include include class entity entity intage m name unknow m age age int main 如果我們使用隱式方式的話,也可以這樣來初始化它 int main 如果有這樣乙個函式,你可以在主函式中如下呼叫它 vo...

C 關鍵詞之 mutable

在c 中,mutable也是為了突破const的限制而設定的。被mutable修飾的變數,將永遠處於可變的狀態,即使在乙個const函式中。include class person person person person person int person getage const int per...

C 學習筆記 關鍵詞

1 friend友元 採用類的機制後實現了資料的隱藏與封裝,類的資料成員一般定義為私有成員,成員函式一般定義為公有的,依此提供類與外界間的通訊介面。但是,有時需要定義一些函式,這些函式不是類的一部分 注意友元函式不是類的一部分 但又需要頻繁地訪問類的資料成員,這時可以將這些函式定義為該函式的友元函式...