#include<iostream>
using namespace std;
//若子函数在main函数后,需要提前声明,且默认参数只能在声明中
//默认参数会被实参覆盖
//默认参数从右到左的顺序出现,默认参数可以是常量、全局变量、函数名
int sum(int v1 = 5, int v2 = 6);//声明
void test(int a) {
cout << "test(int)-" << a << endl;
}
void func(int x1, void(*p)(int)) {
p(x1);
}
//默认参数为函数名
void fun(int x1, void(*p)(int) = test) {
p(x1);
}
int main() {
cout << sum() << endl;//11
cout << sum(10) << endl;//16
cout << sum(10, 20) << endl;//30
void(*p)(int) = test;//指针存储函数名
p(10);
func(20, test);//相当于test(20)
fun(30);
getchar();
return 0;
}
int sum(int v1, int v2 ) {
return v1 + v2;
}
//函数重载和默认参数同时使用,可能会产生冲突、二义性(优先选择默认参数)
//void display(int a, int b = 20) {
//
//}
//void display(int a) {
//
//}
//int main() {
// display(10);//冲突、二义性
// return 0;
//}