參考資料
auto是c++中的關鍵字。
自c++11以來,auto關鍵字用於兩種情況:
宣告變數時根據初始化表示式自動推斷該變數的型別;
宣告函式時函式返回值的佔位符。
auto可以在宣告變數時根據變數初始值的型別自動為此變數選擇匹配的型別。
舉例:對於值x=1;即可以宣告:int x = 1
或long x = 1
,也可以直接宣告auto x = 1
。
自動判斷被宣告變數型別
auto f=
3.14
;//double
autos(
"hello");
//const char*
auto z =
newauto(9
);// int*
auto x1 =
5, x2 =
5.0, x3=
'r';
//錯誤,必須是初始化為同一型別
但是,這麼簡單的變數宣告型別,不建議用auto關鍵字,而是應更清晰地直接寫出其型別。
auto關鍵字更適用於型別冗長複雜、變數使用範圍專一時,使程式更清晰易讀。
在vector容器中使用
vector<
int> vec;
for(
auto it = vec.
begin()
; it != vec.
end();
++it)
儲存lambda表示式型別的變數宣告auto ptr =
(double x)
;//型別為std::function函式物件
在模板函式中使用template
<
classt,
class
u>
void
multiply
(t t, u u)
模板函式的返回型別如果也是依賴於從模板引數推導:
template
<
typename _tx,
typename _ty>
auto
multiply
(_tx v1, _ty v2)
->
decltype
( _tx * _ty )
auto result =
multiply
(101
,1.414);
// 結果型別是double
auto關鍵字 decltype關鍵字
自動型別推斷 1 使用auto關鍵字的變數必須有初始值。在定義的時候進行初始化 2 函式引數和模板引數不能被宣告為auto。3 使用auto關鍵字進行型別推導時,如果初始化表示式是引用型別,編譯器會去除引用,除非顯示宣告 4 使用auto使用auto關鍵字進行型別推導時,編譯器會自動忽略頂層cons...
C 之auto關鍵字
在那些情況下要申明型別 定義變數型別 函式返回值,函式引數 表示式返回變數型別 為什麼auto 在開發實踐中,有時候我們並不能非常容易地確定乙個變數應該具有的資料型別。比如,將某個複雜表示式作為初始值賦值給乙個新定義的變數時,我們往往很難確定這個表示式的資料型別,從而無法確定變數應有的資料型別。為了...
C 的auto關鍵字
c中的auto關鍵字沒啥大用,因為它是用於顯式地說明變數是自動儲存型別的,但是auto又只能用於預設就是自動儲存的區域性變數,即函式中定義的變數和函式的引數,所以 emmmm,很尷尬的工作,大家根本不鳥他。比如 intft int x c 看出了auto的尷尬,於是需要有新工作的時候就沒有引入新的關...