歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C++中函數的默認參數

C++中函數的默認參數

日期:2017/3/1 9:52:49   编辑:Linux編程

使用方法:

(1)在函數聲明或定義時,直接對參數賦值,該參數就是默認參數。

(2)在函數調用時,省略部分或全部參數,這時就會使用默認參數進行代替。

注意事項:

(1)一般在聲明函數是設置默認參數。

如果在函數聲明和定義函數時都設置了默認參數,則以函數聲明的默認參數為准。

#include<iostream>
using namespace std;
int main()
{
double add(double a=3.2,double b=9.6);//在函數聲明時設置默認參數
cout<<add()<<endl; //使用默認參數
return 0;
}
double add(double a=3.2,double b=9.5)//在定義函數時設置默認參數
{
return a+b;
}

運行結果:

(2)默認參數的定義順序是自右向左。

即如果設置了一個缺省值,其右邊的參數也應該設定一個缺省值。

即:

int add(int a,int b=1,int c=1);

這樣做是正確的。

而:

int add(int a=1,int b,int c);

這樣做是錯誤的。

這樣做是因為實參傳給系統之後,系統會自左向右與形參進行匹配。

如果函數時add(1,2),那麼a=1,b=2,c等於多少呢?我們只有把參數全部傳遞過去之後,系統才能獲得c的值,但這樣做的話,為什麼還要設置函數的默認參數呢?

所以編譯系統不允許程序員這麼做,因為這麼做是毫無意義的。

(3)默認參數的調用順序是自左向右。

我們在使用函數的時候,實參必須是由左自右書寫的。

/*正確的用法*/
add(1,2,3);//傳遞三個參數的值
add(1,2);//傳遞兩個參數的值
add(1);//傳遞一個參數的值
add();//不傳遞參數的值
/*錯誤的用法*/
add(,2,3);//不能省略掉左邊的參數的值,應該右左向右傳值

錯誤的提示:

Copyright © Linux教程網 All Rights Reserved