1、函数重载的作用是什么?
函数名相同,提高复用性。
2、函数重载的满足条件:
1)同一个作用域。
2)函数名称相同。
3)函数参数类型不同、个数不同、顺序不同。
注意:函数的返回值不可以作为函数重载的条件。
#include <iostream>
using namespace std;
/*
函数重载的满足条件:
1)同一个作用域。
2)函数名称相同。
3)函数参数类型不同、个数不同、顺序不同。
注意:函数的返回值不可以作为函数重载的条件。
*/
void func(int a)
{
cout << "check void func(int a)" << endl;
}
//类型不一样,可以发生重载
void func(double b)
{
cout << "check void func(double b)" << endl;
}
//个数不一样,可以发生重载
void func(int a,double b)
{
cout << "check void func(int a,double b)" << endl;
}
//顺序不一样,可以发生重载
void func(double b,int a)
{
cout << "check void func(double b,int a)" << endl;
}
//返回值不一样,不可以发生重载
/*
int func(double b,int a)
{
cout << "check int func(double b,int a)" << endl;
return 0;
}
*/
int main(int argc,char *argv[])
{
func(10);
func(3.14);
func(10,3.14);
func(3.14,10);
return 0;
}
/*
运行结果:
gec@ubuntu:/mnt/hgfs/love_you/02$ ./a.out
check void func(int a)
check void func(double b)
check void func(int a,double b)
check void func(double b,int a)
gec@ubuntu:/mnt/hgfs/love_you/02$
返回值不同运行结果:
gec@ubuntu:/mnt/hgfs/love_you/02$ g++ demo1.cpp
demo1.cpp:37:5: error: ambiguating new declaration of ‘int func(double, int)’
37 | int func(double b,int a) //“int func(double,int)”的新声明的二义性
| ^~~~
demo1.cpp:30:6: note: old declaration ‘void func(double, int)’
30 | void func(double b,int a) //ambiguating(二义性)
| ^~~~
gec@ubuntu:/mnt/hgfs/love_you/02$
*/