函数默认参数值
//如果函数声明和定义分开写,一般在函数声明处指定默认值
void fun(int a=1);
void fun(int a)
{
cout<<__FUNCTION__<<" "<<a<<endl;
}
//多次声明,可指定一片区域,在此区域内声明并指定默认值
{
void fun(int a=5);
fun();
}
函数重载
函数重载:在同一个作用域,函数名相同,参数列表(参数类型,数量,顺序)不同,与返回类型无关
(可同可不同),这样的函数即为函数重载
注意:
1.
若函数参数是
char*p
与
char p[]
,不是函数重载,是函数重定义
2.
函数参数为
const int
与
int
时不构成重载,构成重定义
而
int*
与
const int*
会构成函数重载
3.
值传递,地址传递,引用传递的函数传参方式构成重载关系
4.
判断题:一个类中定义了两个同名且参数列表也相同的函数,但其中一个是静态成员函数。
错误,同时存在即是错误
5.
例题:区分
int add(int a, int b);
与
int add(int &a, int &b );
方法一:作用域局部声明
int a=10,b=20;
{
int add(int a,int b);
cout<<add(a,b)<<endl;
}
方法二:函数指针
int a=10,b=20;
int(*p_fun1)(int,int)=&fun;
int(*p_fun2)(int&,int&)=&fun;
p_fun1(a,b);
p_fun2(a,b);