09.函数重载
1.为什么需要函数重载
- 当我们需要同一个功能函数实现不同类型或者不同参数个数情况下,都可以调用该函数时就需要函数重载
- 所谓的函数重载就是多个函数使用相同的函数名
int getMax(int a, int b)
{
return a > b ? a : b;
}
float getMax(float a, float b)
{
return a > b ? a : b;
}
int c1 = getMax(1,2);
float c2 = getMax(1.0f,2.0f);
2.函数重载构成的条件
- 1.搞清楚函数重载的构成条件首先需要搞清楚函数的要素:
- (1)函数返回值
- (2)函数名
- (3)函数形参
- (4)函数的调用约定
- 2.要构成函数重载必须满足
- (1)函数名必须相同
- (2)函数的作用域必须相同
- (3)函数形参的个数、类型或者顺序不同
- (4)函数的返回值类型或者函数的调用约定不同并不能构成函数重载
//函数形参类型不同,构成函数重载
int getMax(int a, int b)
{
return a > b ? a : b;
}
float getMax(float a, float b)
{
return a > b ? a : b;
}
//函数形参个数不同,构成函数重载
int getMax(int a, int b)
{
return a > b ? a : b;
}
int getMax(int a, int b,int c)
{
return a > b ? a : b;
}
//函数形参顺序不同,构成函数重载
int getMax(int a, float b)
{
return a > b ? a : b;
}
int getMax(float a, int b)
{
return a > b ? a : b;
}
//但是如果仅仅是形参名称不同并不能构成函数重载
int getMax(int a, float b)
{
return a > b ? a : b;
}
int getMax(int c, float d)
{
return a > b ? a : b;
}
//如果仅仅是返回值类型不同,也不能构成函数重载
int getMax(int a, float b)
{
return a > b ? a : b;
}
float getMax(int a, float b)
{
return a > b ? a : b;
}
//最后一个,函数的调用方式不同,也不能构成函数重载
int __stdcall getMax(int a, float b)
{
return a > b ? a : b;
}
int __cdecl getMax(int a, float b)
{
return a > b ? a : b;
}
关于函数调用方式的相关内容可以参考该链接