佔位符參數

函數聲明的時候,參數可以沒有標識符:

void f(int x, int = 0, float = 1.1);//函數f聲明

其實,在C++中,函數定義的時候,也不一定需要標識符:

void f(int x, int , float flt){/*...*/}//函數f的定義

沒有參數名,有一定的特殊之處,那就是中間的這個參數值是不能再函數體中引用的,但調用的時候還必須提供一個展位符。

因此f的調用方式,可以是f(1)或者f(1,2,3.0).

第一種調用利用了默認參數的性質。第二種調用2必須給,當做佔位符。

那麼展位符的作用是什麼呢?

目的就在於:以後可以修改函數的定義而不需要修改所有函數的調用。

例如:如果開始使用一個函數參數,後來發現這個函數參數沒有用處,可以將它直接去掉而不會產生錯誤警告,而且不需要改動那些調用該函數以前版本的程序代碼。

體驗:

int  example(int x, int , int z)

{

       return x + z;

}//定義

 

int sum = example(1,2,3);

 

當然函數定義中有一個名字y,int example(int x, int y, int  z),而不使用y也可以達到同樣的效果,但這樣因爲

函數體中沒有使用它,多數編譯器都會給出一個警告,並認爲犯了一個邏輯錯誤。

用這種沒有名字的參數,我們可以防止警告,並可以展現我們的意圖。

因此下次修改函數定義的時候,如果一個參數不想用了,可以直接刪除名字就可以了,而不用再重新寫個函數聲明。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章