除了建構函式和析構函式之外,函式宣告都需要明確函式的返回型別,在傳統的c/c++中,函式宣告大致是這個樣子:
int
getsum
(int a,
int b)
;
第乙個int就是函式的返回型別,它表明函式的返回值型別為整數。在c++11之後,我們也可以這樣宣告:
auto
getsum
(int a,
int b)
->
int;
在原來放返回值型別的位置放auto,在函式宣告結束後面接乙個->
在跟著寫返回值型別。兩種方式的效果是一樣的
一般情況下,當返回要返回多個資料時,會選擇將資料封裝在類或者結構體中返回,或者直接返回乙個指標。
這兩種方式要麼麻煩,要麼沒有辦法取得資料的數量,其實我們真正的需求就是返回乙個陣列(可以計算維度的)指標。這種方法是存在的:
int(*
getresultarray
(int mode))[
10];
通過上面的形式,宣告了乙個返回包含10個整數的陣列的指標。對於這樣乙個指標,我們可以像陣列一樣使用:
auto arr =
getresultarray(1
);cout <<
sizeof
(*arr)
/sizeof(*
*arr)
<< endl;
//可以正確計算維度。
當然, 有經驗的程式設計師會這麼做:
typedef
int arr10[10]
;arr10*
getresultarray
(int mode)
c++11增加了返回型別後置以後,我們有了新的選擇:
auto
getresultarray
(int mode)
->
int(*)
[10];
比第一種形式容易理解很多。也不需要自定義型別。 decltype關鍵字與返回型別後置
1.獲知表示式型別 在編譯期完成型別推導 decltype expression 很像sizeof用來推導表示式型別大小 int x 10 decltype x y 1 y int decltype x y z 0 z int const int i x decltype i j y j const...
C C 程式設計 型別
寬字元型別 char16 t char32 t c 11 起 wchar t 有符號整數型別 short int int long int long long int c 11 起 無符號整數型別 unsigned short int unsigned int unsigned long int u...
C 11學習筆記 返回型別後置語法
原創 2016年06月22日 01 48 22 本次學習3個知識點 1 auto推導型別 2 decltype推導表示式的型別 3 返回型別後置語法 泛型程式設計中經常遇到的寫乙個加法函式 template r add t t,u u int a 10 float b 20.0 auto c add...