函数重载:在同一个作用域下,函数名相同,参数列表不同(参数类型,数量等),返回类型无要求,重载是描述多个函数之间的关系。
一.简单的函数重载:
1.参数类型不同:
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
2.数量不同:
int add(int a, int b) {
return a + b;
}
int add(int a, int b,int c) {
return a + b + c;
}
在主函数中使用时会匹配相对应的函数。
int main()
{
cout << add(10,20) << endl;
cout << add(10.2, 20.9) << endl;
cout << add(1, 2, 3) << endl;
system("pause");
return 0;
}
二.一些比较容易混淆的函数重载
//是函数重载
void fun(){}
void fun(int a=1){}
//不是函数重载
void fun1(int a){}
void fun1(const int a) {}
//是重载
void fun2(int* a){}
void fun2(const int* a) {}
//不是函数重载,重定义
void fun3(int arr[]){}作为参数arr[]和*arr无区别
void fun3(int *arr) {}
在上面第一种函数重载中我们想要按照下面注释的条件去使用需要在main函数中一整种方式去写
fun(2);//可以自动匹配
void fun();
fun();//不可以自动匹配需要在前面写上声明
//如果想用带初始化值得还想要在局部声明,则需要用{}将他们括起来
{
void fun(int a = 1);
fun(3);
}