學習內容參考:【
auto
可以在宣告變數的時候根據變數初始值的型別自動為此變數選擇匹配的型別,類似的關鍵字還有decltype。
auto關鍵字必須在定義的時候賦予初始化值(類似於const)
在沒有auto的時候,我們操作標準庫時經常需要這樣:
#include#includeint main()
}
使用auto可以簡化**:
#include#includeint main()
}
template void multiply(_tx x, _ty y)
template auto multiply(_tx x, _ty y)->decltype(_tx*_ty)
當模板函式的返回值依賴於模板的引數時,無法在編譯**前確定模板引數的型別,故也無從知道返回值的型別,這時我們可以使用auto。格式如上所示。
decltype操作符用於查詢表示式的資料型別,也是c++11標準引入的新的運算子,其目的也是解決泛型程式設計中有些型別由模板引數決定,而難以表示它的問題。
auto在這裡的作用也稱為返回值佔位,它只是為函式返回值佔了乙個位置,真正的返回值是後面的decltype(_tx*_ty)。
但如果不採用後置,則函式宣告時為:
decltype(_tx*_ty)multiply(_tx x, _ty y)
此時由於_tx,_ty還沒宣告,編譯無法通過。 C 學習(一) auto的用法
在c 11標準之前,auto是乙個說明符,表示變數為自動變數,但是在c 中,一般把變數預設為自動儲存,所以關鍵字auto很少用到。在c 11標準實行後,auto不再是說明符,它被重新定義,用於自動型別推斷,比如 auto n 100 n is int auto x 1.5 x is double a...
C 學習筆記(三) auto的用法
1 auto變數必須在定義時初始化 auto a1 10 正確 auto b1 錯誤,編譯器無法推導b1的型別 b1 10 2 定義在乙個auto序列的變數必須始終推導成同一型別 auto a4 10,a5 正確 auto b4,b5 20.0 錯誤,沒有推導為同一型別3 初始化表示式為陣列時,au...
C 之decltype和auto的用法
返回值 decltype 表示式 1 當表示式返回右值,則decltype返回該表示式的型別 2 當表示式返回左值,則decltype返回該表示式的左值引用型別 注 auto的用法 1 自動型別推斷 templatet,class u void myfunc t t,u u 2 返回值佔位。函式模板...