帶預設引數的函式

2021-05-28 09:12:46 字數 1046 閱讀 2150

使用帶預設引數的函式時要注意

(1)  既可以在函式宣告也可以在函式定義中指定預設實參。但是,在乙個檔案中,只能為乙個形參指定預設實參一次。函式最終的預設引數是宣告和定義的合集。下面這樣也是可以的,只是不推薦

int fun(int a,int b=5);

int fun(int a=9,b)

(2)  當函式定義和呼叫在同乙個檔案時,如果函式的定義在函式呼叫之前,則應在函式定義中給出預設值,實際上此時的定義也是宣告。如果函式的定義在函式呼叫之後,則在函式呼叫之前需要有函式宣告,此時必須在函式宣告中給出預設值,在函式定義時可以不給出預設值

(3)      對於類中的函式,一般在宣告的時候給出預設值,否則的話只有在包含定義的檔案裡這個預設實參才會起作用

(4) 不能將實際值傳遞給引用型別的引數。可以將變數作引用型別引數的預設值,這時變數必須是已經宣告且是全域性變數。

宣告函式時,要將類或結構中定義 的靜態成員變數作為預設值,若該類或結構還未建立例項,那要在此靜態成員變數前加上作用域操作符(::)。

若已宣告了類或結構的例項,則引用其成員變數作為函式引數的預設值,就要在變數前加上例項名和成員操作符(.)。

(5)      對於非類中的函式,在函式宣告中定義預設引數的另外乙個好處時,可以利用區域性宣告來隨意更改預設引數的值。

#include "stdafx.h"

#include

using namespace std;

int fglobal(int a,int b,int c)

int fglobal(int a,int b=2,int c=5); // 全域性的申明

int main(int argc, char* argv)

//125

//235

//325

l  (6)乙個函式不能既作為過載函式,又作為有預設引數的函式,應為當呼叫函式如果少寫乙個引數,系統無法判定是利用過載函式還是利用預設引數的函式,出現二義性。

如果有個函式既是過載又是預設引數函式,但是不產生二義性呢,比如作為預設引數函式有2種呼叫方式,但是都和作為過載的呼叫方式不一致,那就可以了

呼叫帶預設引數的函式示例

可以呼叫函式,而無需指定所有引數。為了執行此函式,對於沒有在函式呼叫中指定的引數,函式宣告時引數必須有其預設值。在下面的程式中,將看到如何實現帶引數的函式。給定長 寬和高,將使用此程式來計算盒子的體積。體積將和長 寬 高一同顯示。include class box int box get volum...

C (帶有預設引數的函式引數)預設函式引數

預設引數?在c 中,允許實參的個數與形參的個數不同。在宣告函式原型時,為乙個或者多個形參指定預設值,以後呼叫這個函式時,若省略某乙個實參,c 則自動的以預設值作為相應引數的值。實列說明 includeusing namespace std int add int x 4,int y 7 int ma...

函式的預設引數

c 中只能定義一次預設值,即原型說明時定義了預設值,後面的函式定義不能有預設值,且預設引數都必須是從右到左定義,呼叫時實參對形參的初始化必須是從左向右的 比如 函式宣告f int i 5 定義了預設值。後面對f的函式定義時就不需要提供預設值了 f int i 即函式定義不能寫成 f int i 5 ...