返回值還引數 獲取函式的引數數量和返回值型別

2021-10-14 22:04:21 字數 907 閱讀 6603

有的時候,我們由於某一些特殊的需求,希望獲取乙個函式的返回值型別,或者是引數數量,可以借助模板來實現。假如我們有乙個函式

int f(double, float)

當我們需要獲取返回值型別的時候,我們首先宣告乙個模板函式。

template r getretvalue(r(*)(args...));

這個函式不需要被實現,因為我們只是想得到它的返回值型別,並不是真的呼叫這個函式,此時我們可以通過以下一句話獲取函式型別

using ret_t = decltype(getretvalue(f));

decltype是根據進數返回值進行型別推斷的,只需要拿到函式宣告即可,並不在乎這個函式是不是真的被定義了。當函式中傳入了引數f之後,模板會自動地進行型別推斷,將返回值傳遞給r,將引數型別double, float打包傳遞給args。此時ret_t 就是函式f的返回值型別int。

如果我們需要獲取引數的個數,那麼可以用如下**來實現:

template constexpr size_t getnumargs(r(*)(args...))

跟上面的做法類似,使用sizeof...可以獲取引數的個數。

當函式是類成員函式的時候,上面的兩個函式需要對應修改為:

template r getretvalue(r(c::*)(args...));

template constexpr size_t getnumargs(r(c::*)(args...))

其中(c::*)表示這是類c的乙個成員函式指標,當我們傳入乙個類成員函式指標時候,r、c、args都會被對應的推斷出來。

返回值還引數 有返回值有引數的資料運算

有乙個引數有返回值的函式 include include int f int x 函式y 2x 1int add int x 自加函式int main 實現的功能是計算f x 的值,f x 2x 1,以及乙個自加函式return的作用是把函式執行的結果返回給呼叫者,返回值是什麼取決於return後面...

引數 返回值

1.函式 函式是對功能的封裝 語法 def 函式名 形參列表 函式體 塊,return 呼叫 函式名 實參列表 2.返回值 return 在函式執行的時候.如果遇到return.直接返回 1.如果函式什麼都不寫,不寫return,沒有返回值.得到的是none 2.在函式中間或者末尾寫return,返...

python 函式 引數 返回值

函式 function 也叫方法 method 是一組可以重複使用的 段。函式分為內部函式和使用者自定義函式。內部函式就是程式語言已經寫好了,使用者無序定義就能直接呼叫的函式,比如說len str print 等,但是這些函式還遠不能滿足實際開發,故使用者可以自定義函式。函式的結構是 def 函式名...