【C++】函数名重载

C语言没有函数名重载,C++有函数名重载。

函数名相同,函数参数列表不同,称为函数名重载。函数参数列表不同包括:

1)参数个数不同;

2)参数类型不同;

#include "stdio.h"

double find_max(double a, double b, double c)
{
    double max = a;
    if(max < b)
    {
        max = b;
    }
    else if(max < c)
    {
        max = c;
    }
    return max;
}

int main()
{
    double a = find_max(1.1, 0.2, 3.3);
    printf("%f", a);

    return 0;
}

/*
//run out:
3.3000
*/

函数匹配步骤:

1)先根据函数名查找

找到一个或多个同名函数(如果一个也没有,就会编译报错)

2)按”类型“+”个数“匹配

第一种情况:找到一个完全匹配的函数,则调用该函数;

第二种情况:没有找到完全匹配的函数,这时跳到第三步模糊匹配。

3)模糊匹配

这种情况比较复杂。(但一定是参数个数相同)

模糊匹配实例:2个整数值比大小,返回大的那个值。

#include "stdio.h"

double find_max(double a, double b, double c)
{
    double max = a;
    if(max < b)
    {
        max = b;
    }
    else if(max < c)
    {
        max = c;
    }
    return max;
}

double find_max(double a, double b)
{
    double max = a;
    if(max < b)
    {
        max = b;
    }
    return max;
}

int main()
{
    int a = 1;
    int b = 2;
    double result = find_max(a, b);
    printf("%f", result);

    return 0;
}

/*
//run out:
2.000000
*/

从上面的实例中可以看出,find_max并没有找到完全匹配的函数,这时先比较参数个数,相同的作为候选,然后从候选中查看传入的a,b能否从int转成double,如果可以,那么就使用该函数。否则就会编译报错。

猜你喜欢

转载自blog.csdn.net/u013066730/article/details/84253712
今日推荐