C++ 函数的重载

  函数重载--即对一个函数重新赋予它新的含义,使同一个函数名可以多用。其实,所谓重载就是“一物多用”。


  下面举个简单例子:
//返回值,参数类型均为int型的Max函数
int Max(int a , int b)
{
    if(a > b)
       return a;
    return b;
}

//返回值,参数类型均为double型的Max函数
double Max(double a , double b)
{
    if(a > b)
       return a;
    return b;
}

//返回值,参数类型均为char型的Max函数
char Max(char a , char b)
{
    if(a > b)
       return a;
    return b;
}

int main()
{
    int Max(int a , int b);//函数声明
    int Max(double a , int b);//函数声明
    int Max(char a , char b);//函数声明
    int i1,i2,i;
    cin>>i1>>i2;//输入两个整数
    i=Max(i1,i2);//求最大整数
    cout<<"int_Max: " << i << endl;
    double d1,d2,d;
    cin>>d1>>d2;//输入两个浮点数
    d=Max(d1,d2);//求最大浮点数
    cout << "double_Max: "<<d << endl;
    char c1,c2,c;
    cin>>c1>>c2;//输入两个字符
c=Max(c1,c2);//求最大字符 cout <<"char_Max: "<< c << endl; return 0;}

结果为:

  看到,我们用了同一个函数名为Max分别定义了三个函数,分别求最大整形数据,最大浮点型数据,最大字符数据,结果都是我们想要的结果!这就是函数重载,用同一个函数名实现不同的功能,当调用函数的时候,系统会自动根据用户传的数据类型去寻找与之匹配的函数,实现该功能。

 接下来再看一个例子:
//返回值,参数类型均为int型的Max函数(2个参数)
int Max(int a , int b)
{
    if(a > b)
       return a;
    return b;
}

//返回值,参数类型均为int型的Max函数(3个参数)
double Max(int a , int b , int c)
{
    if(a > b)
      b=a;
    if(c > b)
      b=c;
    return b;
}

int main()
{
    int i1 = 9,i2 = 11,i3 = 8,i;
    i=Max(i1,i2);//求两个数最大数
    i=Max(i1,i2,i3)//求三个数最大数
    cout<<"int_Max:(i1,i2) "<<Max(i1,i2) << endl;//求两个数最大数
     cout<<"int_Max:(i1,i2,i3) "<<Max(i1,i2,i3) << endl;//求三个数最大数
    return 0;
}
输出结果为:

可以看出,同一个函数名,拥有不同的参数个数也形成了重载。


再来看下面这个简单的例子:

//定义一个返回值类型为int,参数为一个int a的Test函数
int Test(int a)
{
	return a;
}

//定义一个返回值类型为double,参数为一个int a的Test函数
double Test(int a)
{
	return a;
}

//定义一个返回值类型为char,参数为一个int a的Test函数
char Test(int a)
{
	return a;
}

int main()
{
	Test(10);
	return 0;
}

结果如下:(报错了!)



综上所述:

       重载函数需要满足的条件--->重载函数的参数个数、参数类型、参数顺序,三者至少有一种不同,函数的返回类型可以相同,也可以不相同!



猜你喜欢

转载自blog.csdn.net/Amin20w/article/details/81019095