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的更多內容!

推薦閱讀: