【C/C++】函数默认参数注意事项

在C++中,函数的形参列表中的形参是可以有默认值的。

语法: 返回值类型 函数名 (参数= 默认值){}

示例:

//1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值。
int func(int a, int b = 10, int c = 10) {
	return a + b + c;
}

//2. 如果函数声明有默认值,函数实现的时候就不能有默认参数。
int func2(int a = 10, int b = 10);
int func2(int a, int b) {
	return a + b;
}

// 3. 其实,函数的声明和实现都可以有默认参数,但不能重复,否则会有二义性。
// 如果同一个变量,声明和实现都有默认参数,编辑器不知道按声明的默认值来,还是按照实现的默认值来。
int func3(int a, int b = 10);
int func3(int a = 10, int b) {
	return a + b;
}

int main() {

	cout << "ret = " << func(100) << endl;		// 120
	cout << "ret = " << func2(20, 20) << endl;	// 40
	cout << "ret = " << func3() << endl;		// 20

	system("pause");

	return 0;
}

总结:
1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值。
2. 如果函数声明有默认值,函数实现的时候就不能有默认参数。
3. 其实,函数的声明和实现都可以有默认参数,但不能重复,否则会有二义性。如果同一个变量,声明和实现都有默认参数,编辑器不知道按声明的默认值来,还是按照实现的默认值来。 但我个人觉得:不要这样写比较好,编辑器是可以通过,不代表程序没有BUG。




你可能感兴趣的:(【C/C++】,c语言,c++,算法)