4 8 函式的預設引數

2021-06-28 23:27:59 字數 1299 閱讀 7755

一般情況下,在函式呼叫時形參從實參那裡取得值,因此實參的個數應與形參相同。

有時多次呼叫同一函式時用同樣的實參,c++提供簡單的處理辦法,給形參乙個預設值,這樣形參就不必一定要從實參取值了。

如有一函式宣告:

float area(float r=6.5);

指定r的預設值為6.5,如果在呼叫此函式時,確認r的值為6.5,則可以不必給出實參的值,如:

area( ); //相當於area(6.5);

如果不想使形參取此預設值,則通過實參另行給出。如:

area(7.5); //形參得到的值為7.5,而不是6.5

這種方法比較靈活,可以簡化程式設計,提高執行效率。

如果有多個形參,可以使每個形參有乙個預設值,也可以只對一部分形參指定預設值,另一部分形參不指定預設值。如有乙個求圓柱體體積的函式,形參h代表圓柱體的高,r為圓柱體半徑。函式原型如下:

float volume(float h, float r=12.5);  //只對形參r指定預設值12.5

函式呼叫可以採用以下形式:

volume(45.6);  //相當於volume(45.6,12.5)

volume(34.2, 10.4); //h的值為34.2,r的值為10.4

實參與形參的結合是從左至右順序進行的。因此指定預設值的引數必須放在形參表列中的最右端,否則出錯。

例如:void f1(float a, int b=0, int c, char d=′a′);  //不正確

void f2(float a, int c, int b=0, char d=′a′);  //正確

如果呼叫上面的f2函式,可以採取下面的形式:

f2(3.5, 5, 3, ′x′) //形參的值全部從實參得到

f2(3.5, 5, 3) //最後乙個形參的值取預設值′a′

f2(3.5, 5) //最後兩個形參的值取預設值,b=0,d=′a′

可以看到,在呼叫有預設引數的函式時,實參的個數可以與形參的個數不同,實參未給定的,從形參的預設值得到值。利用這一特性,可以使函式的使用更加靈活。例如例4.7求2個數或3個數中的最大數。也可以不用過載函式,而改用帶有預設引數的函式。

【例4.8】求2個或3個正整數中的最大數,用帶有預設引數的函式實現。

#include using namespace std;

int main( )

運**況如下:

14  -56  135↙

max(a,b,c)=135

max(a,b)=14

在使用帶有預設引數的函式時有兩點要注意:

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 ...

函式的預設引數

c 在宣告函式原型的時候,可以為乙個或多個引數指定預設引數值,當函式呼叫的時候,如果沒有指定這個值,編譯器會自動用預設值替代。void fun int a 1,int b 2 int main 注意點 1.void fun int a,int b 1,int c 2 若形參b是預設引數,那麼形參c必...