函数重载的本质:用相同名字的函数处理不同的事儿
1、重载方法:
函数名字相同,参数类型不同或参数个数不同等都可以实现重载。例如:
#include <iostream>
using namespace std;
void fun(int a){cout<<"a的平方:"<<a*a<<endl;}
void fun(float b){cout<<"b的倍数:"<<b*b<<endl;}
void fun(double c){cout<<"c的倍数:"<<c*c<<endl;}
int main()
{
int a=1;
float b=1.5;
double c=1.2345;
fun(a);
fun(b);
fun(c);
return 0;
}
输出结果:
分析:可见,同样是函数fun(),里面参数类型不一样,可实现不同的功能。
讨论:对于成员函数和构造函数来说,也可以实现重载,方法与普通函数是一样的,这里就不再举例了。
2、函数默认参数
如果改做声明的方式,并进行初始化,那么初始化的参数就是默认参数,其格式如下:
void fun(int=0,int=0)
上面的式子就表示把两个整型变量初始化为0,这里以成员函数的重载为例:
#include <iostream>
using namespace std;
class A
{
public:
void set(int=10,int=20);
void count(bool=false);
private:
int w;
int h;
};
void A::set(int width,int height)
{
w=width;
h=height;
}
void A::count(bool a)
{
if (a==true)
{
cout<<"a的值为真时,构成矩形面积为:"<<w*h<<endl;
}
else
{
cout<<"a的值为假时,构成三角形面积为:"<<w*h/2<<endl;
}
}
int main()
{
A one;
one.set();
one.count();
one.count(1);
return 0;
}
输出结果:
分析:声明里默认的初始化参数构成一种重载方式,当调用无参数函数时,即调用默认的参数值。