C++支持函数重载
允许多个函数共享同一个函数名,但是针对不同参数类型提供共同的操作。重载函数是函数的一种特殊情况。多义词问题C无法区分,C++可以利用重载做到。
注意:1.必须在同一作用域(全局和局部)。
2.函数名相同。
3.这些同名函数的形参列表(参数个数、类型、顺序)必须不同,常用来处理实现功能类似数据类型不同的问题。
4.(VS中)仅仅返回值类型不同,不能构成重载。
//写上一个通用加法
举个例子
(1)
int Add(int left, int right)
{
return left + right;
}
char Add(char left, char right)
{
return left + right;
}
int main()
{
Add(10, 20);
Add('1', '2');
return 0;
}
C编不过去,会显示重定义,C++可以
C中若想让程序编过去:
int Add_int_int(int left, int right)
{
return left + right;
}
char Add_char_char(char left, char right)
{
return left + right;
}
int main()
{
Add_int_int(10, 20);
Add_char_char('1', '2');
return 0;
(2)调用不明确
再或者进行类型提升,即整数提升(如bool 到 int、char到int、short 到int),float到double
(3)还有个调用不明确的例子
void FunTest()
{}
void FunTest(int a=0)
{}
int main()
{
FunTest(10);//10
FunTest();//编不过去,不知道调用哪个,第一个还是第二个
return 0;
}
这个例子的确构成了重载,但调用不明确。