1.帶預設形參值的函式
#include
using
namespace std;
intadd
(int a=3,
int b=5)
intmain()
2.c++函式過載
函式過載即兩個或以上的函式,函式名相同,但形參型別或個數不同,編譯器根據呼叫方傳入的引數的型別和個數,自動選擇最適合的乙個函式來進行繫結呼叫,自動實現選擇。
3.函式模板
函式模板,是可以建立乙個通用的函式,可以支援多種形參。
用關鍵字template來定義,形式如下:
template
返回值 函式名(形參表列) 模板參數列
函式體說明一下,這個一般形式中,第一行的template是一句宣告語句 ,template是定義模板函式的關鍵字,尖括號裡可以有多個型別,前面都要用class(或者typename來定義)。然後後面跟定義的函式模板,切記中間不可以加其他的語句,不然會報錯!
#include
using
namespace std;
template
<
classt1,
class
t2>
t1 add
(t1 x,t2 y)
intmain()
在主函式中,實際呼叫時,我們呼叫了三次,分別三種不用的型別傳入,模板函式中的t1和t2型別將根據實際傳入的型別變成具體型別。這個化成就叫做模板的例項化。
下面是輸出:
4.內聯函式
函式的呼叫,想必大家都用過,乙個函式在被另乙個函式呼叫的時候,才有生命,才會為其準備對應的記憶體空間,再呼叫完畢之後再清理釋放結束。
可以看到,每一次的函式呼叫都會帶來一些時間和空間上的花銷。
而自定義函式的乙個作用,也是為了提高**的重用性,可以在需要的時候隨時呼叫,提高開發效率。那麼,乙個**本身就不多,又頻繁被呼叫的函式,我們就該好好想想,這樣做到底合算不合算了。
好在,c++已經幫我們考慮到這個問題,為我們提供了內聯的機制,即仍然使用自定義函式,但在編譯的時候,把函式**插入到函式呼叫處,從而免去函式呼叫的一系列過程,像普通順序執行的**一樣,來解決這個問題!
那麼用法呢,也非常簡單,只需要在函式定義的前面加上關鍵字inline宣告就可以了
如以下**:
#include
using
namespace std;
inline
intmax
(int a,
int b)
intmain()
值得說明的是,內聯函式的定義要在呼叫之前出現,才可以讓編譯器在編譯期間了解上下文,進行**替換。
除此以外,內聯函式與register變數類似,僅僅是我們提給編譯器的乙個請求,最終是否真正會實現內聯,由編譯器根據情況自行選擇。
python 函式,傳參,呼叫
簡單函式介紹 定義 形參 實參 傳參的4中方式 呼叫 return 1.函式定義 python中函式必須先定義,再使用.寫乙個函式前要空兩行,寫完後再空兩行.pycharm書寫 def 函式名 引數 1 2 2.函式呼叫 函式名 引數 舉例 使用函式完成 1 2 定義函式 def add resul...
fixture 呼叫函式名傳參
print 結束測試 測試類 pytest.mark.usefixtures init login class testopenapi pytest.mark.usefixtures init login def test freeze self,init login print init logi...
QT呼叫python檔案(呼叫函式傳參)
pro檔案中 includepath i e miniconda3 include libs le miniconda3 libs lpython37 include define slots q slots include int main int argc,char ar 設定python檔案路...