默认参数
1.书写格式
void func(int a = 10) {
cout << "a is " << a << endl;
}
2.默认参数只能是右到左,以下写法是错误的
因为,func(30)调用,那30属于第一个参数?第二个参数?
void func(int a = 10,int b) {
cout << "a is " << a << endl;
cout << "b is " << b << endl;
}
3.如果函数同时有声明和实现,默认参数只能放在函数声明中
void func(int a, int b = 11);
void func(int a, int b ) {
cout << "a is " << a << endl;
cout << "b is " << b << endl;
}
4.默认参数可以是全局变量
int age = 20;
void display(int a = age) {
cout << "a is " << a << endl;
}
4.1默认参数可以是函数的指针
void test() {
cout << "test()" << endl;
}
// 注意:test函数必须要再前面
void show(int a, void(*func)() = test) {
cout << "a is" << a << endl;
cout << "func is" << func << endl;
func();
}
调用
int main() {
show(5, test);
getchar();
return 0;
}
5.函数重载和默认参数可能产生冲突,二义性(建议优先使用默认参数)
// 编译时候不报错,函数调用时候会报错
void display() {
cout << "display()" << endl;
}
void display(int a = 10, int b = 20) {
cout << "a is " << a << endl;
cout << "b is " << b << endl;
}