在C++中,函数形参列表中的形参是可以有默认值的。
//调用函数时,如果不向形参赋值,则采用默认值,否则采用我们赋给形参的值
int func(int a = 10, int b = 2)
{
}
//注意,如果某个形参已经有了默认参数,那么从这个形参开始往后的所有形参都必须有默认参数
int func2(int a, int b = 2, int c=10) //b有了默认参数,则位于b之后的c必须有默认参数
{
}
//函数声明和函数定义,只能有一个默认参数,不能重复设置
int func3(int a = 2, int b = 2); //函数声明,a,b均已有默认参数
int func3(int a, int b) //函数定义,因为声明中a,b有了默认参数,所以在定义的时候不能再次设置默认参数
{
return a + b;
}
2. 函数占位参数
C++中函数形参列表中允许有占位参数,用来做占位,调用函数时必须填补该位置
//占位参数可以有默认值,如果不给占位参数设置默认值,则在调用的时候需要为其赋值
int func(int a = 10, int = 2)
{
return a;
}
3. 函数重载
3.1 函数重载概述
C++中函数名可以相同,提高复用性
//函数参数的个数不同、类型不同、顺序不同都会导致调用时选择的函数不同
int func(int a)
{
return 0;
}
int func(double a)
{
return 0;
}
3.2 函数重载注意事项
3.2.1 函数重载在引用中
//引用在函数重载中
void func(int& a) // int& a=1000是不合法的,因为引用只可以引用栈区或者堆区的数据,不能引用常量区的数据
{
const << "调用func(int& a)" << endl;
}
void func(const int& a) // const int& a=1000是合法的
{
const << "调用func(const int& a)" << endl;
}
int main()
{
int k = 1000;
func(k); // 调用func(int& a),因为k是一个变量
func(1000); // 调用func(const int& a),因为1000是一个常量
return 0;
}
3.2.2 函数重载遇到默认参数时
//默认值在函数重载中
//以下代码在重载时会出错,调用函数func(10)时,编译器两个函数都可以调用,因此会报错
void func(int a)
{
const << "调用func(int a)" << endl;
}
void func(int a,int b = 10)
{
const << "调用func(int a, int b)" << endl;
}


