c auto變數學習

2021-08-03 12:27:51 字數 806 閱讀 1943

#include#includeint main()

}

這樣看**寫**實在煩得很。有人可能會說為何不直接使用using namespace std,這樣**可以短一點。實際上這不是該建議的方法(c++primer對此有相關敘述)。使用auto能簡化**:

template void multiply(_tx x, _ty y)

若不使用auto變數來宣告v,那這個函式就難定義啦,不到編譯的時候,誰知道x*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型別用法總結

一 用途 auto是c 程式語言的關鍵字。用於兩種情況 1 宣告變數時根據初始化表示式自動推斷該變數的型別 2 宣告函式時函式返回值的佔位符 二 簡要理解 auto可以在宣告變數時根據變數初始值的型別自動為此變數選擇匹配的型別。舉例 對於值x 1 既可以宣告 int x 1 或 long x 1,也...

c auto型別說明符

程式設計是常常需要把表示式的值賦給變數,這就要求子再宣告變數的時候清楚知道表示式的型別,然而要做到這一點並不容易,有時候根本做不到。為了解決問題,c 11標準引入了auto型別說明符,用它就能讓編譯器替我們去分析表示式的型別。與原來那些型別說明符不同,auto讓編譯器通過初始值來推算變數型別。顯然,...

c auto關鍵字使用

c 11 auto可以在宣告變數的時候根據變數初始值的型別自動為此變數選擇匹配的型別,類似的關鍵字還有 decltype 舉個例子 int a 10 auto au a a 自動型別推斷,au a為int型別 cout typeid au a name endl typeid運算子可以輸出變數的型別...