天天看點

c++-帶預設形參值的函數

注意三點:

(1)如果函數的定義在函數調用之前, 則在函數定義時給出預設值,如果函數的定義在函數調用之後則應該在聲明中給出預設值

(2)一個函數不能即作為重載函數,又作為有預設參數的函數,以為容易出現二義性(說法不嚴格,其實隻要不産生二義性即可)

(3)帶預設值的參數都位于參數清單的最右端

#include <iostream>

using namespace std;

int fun(int a, int b=5)
{
	return a+b;
}

int fun1(int a, int b, int c=5);
int fun2(int a, int b, int c, int d);
//int fun3(int a=1, int b, int c=2);   //error 有預設值的右方不能有非預設值的變量存在

int main()
{
	cout<<fun(3)<<endl;
	cout<<fun1(1,2)<<endl;
	//cout<<fun2(1,2,3)<<endl;   //error,如果有預設值一定要在聲明中指出,否則,即使在定義指出也不生效
	return 0;
}

//int fun1(int a, int b, int c=6)  //error, 編譯錯誤,聲明中給出,定義時不能再重新賦預設值//有的編譯器可以通過
//{
//	return a+b+c;
//}

int fun1(int a, int b, int c)
{
	return a+b+c;
}

int fun2(int a, int b, int c, int d=8)
{
	return a+b+c+d;
}
           

繼續閱讀