C++之默認參數詳解
一、C++ 默認參數
通常情況下,函數在調用時,形參從實參那裡取得值。對於多次調用同一函數同一實參時,C++給出瞭更簡單的處理辦法。給形參以默認值,這樣就不用從實參那裡取值瞭。
1.舉例
1.單個參數
#include <iostream> #include <ctime> using namespace std; void weatherForcast(char * w="sunny") { time_t t = time(0); char tmp[64]; strftime(tmp,sizeof(tmp), "%Y/%m/%d %X %A ",localtime(&t) ); cout<<tmp<< "today is weahter "<<w<<endl; } int main() { //sunny windy cloudy foggy rainy weatherForcast(); weatherForcast("rainny"); weatherForcast(); return 0; }
2.多個參數
#include <iostream> using namespace std; float volume(float length, float weight = 4,float high = 5) { return length*weight*high; } int main() { float v = volume(10); float v1 = volume(10,20); float v2 = volume(10,20,30); cout<<v<<endl; cout<<v1<<endl; cout<<v2<<endl; return 0; }
2.規則
1.規定默認參數必須從函數參數的右邊向左邊使用
正確聲明: void fun1(int a, int b=10); void fun2(int a, int b=10, int c=20); 錯誤聲明: void fun3(int a=5, int b, int c); void fun4(int a, int b=5, int c);
2.默認參數不能在聲明和定義中同時出現
錯誤 聲明: void fun1(int a=10); 定義: void fun1(int a=10){......} 正確 聲明: void fun2(int a=10); 定義: void fun2(int a){......} 或者 聲明: void fun2(int a); 定義: void fun2(int a=10){......}
3.函數聲明和定義一體時,默認參數在定義或聲明處都可以。聲明在前,定義在後的話,默認參數在聲明處
4.一個函數,不能又作重載,又作默認參數的函數。當你少寫一個參數時,系統無法確認時重載還是默認函數。
void print(int a) { } void print(int a,int b =10) { } int main() { print(10); return 0; } error:main.cpp:14: error: call of overloaded 'print(int)' is ambiguous print(10);
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!