函数形参默认值:
从第一个参数给定默认值的位置开始往右必须要有默认值
int swap(int a,int b=10)//可以,有默认值的在右边
int swap(int a=10;,int b)//不可以
有默认参数的位置可以调用时可以不写参数
int swap(int a,int b=10)
int main(){
swap(10);
return 0;
}
int swap(int a,int b){//声明有默认值了,实现就不能有,反之一样
}
函数占位参数:
int swap(int a,int);//甚至有默认参数
int main(){
swap(10,10);//占位参数必须补全
return 0;
}
函数重载:
同函数名的使用,就是重载
int swap(int a);
int swap(char a);//这就是重载
注意事项:
一、函数名相同
二、返回值相同
三、同一作用域下
四、参数不同,参数个数不同,参数顺序不同
五、关于引用和重载的碰撞,以及引用作为重载的条件
int swap(int &a);
int swap(const int &a);
int main(){
int a = 10;
swap(a); //调用没有const的函数,a在变量区
swap(10);//调用有const的函数,10在常量区
return 0;
}
六、函数重载碰到默认参数
int swap(int a,int b=10);
int swap(int a);
int main(){
swap(10);//二义性,两个重载函数都能调用,出错
swap(10,20);//只能尽量避免,正确
return 0;
}