文章目录
一、函数重载概述
作用:函数名可以相同,提高复用性。
条件:
- 在同一个作用域下
- 函数名称相同
- 函数参数类型不同、个数不同或者顺序不同
void func(){
cout << "func() 的调用" << endl;
}
void func(int a){
cout << "func(int a) 的调用" << endl;
}
void func(double a){
cout << "func(double a) 的调用" << endl;
}
void func(int a, double b){
cout << "func(int a, double b) 的调用" << endl;
}
void func(double a, int b){
cout << "func(double a, int b) 的调用" << endl;
}
int main(){
func();
func(1);
func(1.1);
func(1, 1.6);
func(1.6, 2);
return 0;
}
输出结果为
注意:函数参数返回值不可以作为函数重载的条件。即以下写法在部分编译器下会报错。
int func(int a){
cout << "func(int a) 的调用" << endl;
}
void func(double a){
cout << "func(double a) 的调用" << endl;
}
二、函数重载注意事项
1、引用作为重载条件
void func(int& a){
cout << "func(int &a) 调用" << endl;
}
void func(const int& a){
cout << "func(const int &a) 调用" << endl;
}
2、函数重载遇到默认参数
void func2(int a, int b = 10){
cout << "func2(int a, int b = 10) 调用" << endl;
}
void func2(int a){
cout << "func2(int a) 调用" << endl;
}
int main(){
int a = 10;
func(a); //调用无const
func(10); //调用有const
//func2(10); /此处碰到默认参数产生歧义
return 0;
}