C++小结--函数重载

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u014421520/article/details/79876532

1 什么是函数重载

在C++中,一个函数名有多个函数体的实现方式就叫做函数重载。换句话说,我们使用同一个函数,传入不同的参数,会返回不同的调用结果。

2 为什么需要函数重载

函数重载可以提高函数调用的灵活性,我们不必再为函数名名而苦恼。比如在C语言中,我们要计算加法,可以写如下一个函数来实现:

int add(int a, int b)
{
    return a + b;
}

这样我们在需要调用的时候就可以直接调用sum = add(100, 200);,但是,我们想要一个浮点数的加法运算函数呢?这样sum = add(12.3, 33.2);,显然是不对的。所以又有人提出,再写一个加法函数来实现浮点数相加不就行了吗。没错,我们又写了一个浮点数的加法函数:

float add1(float a; float b)
{
    return a+b;
}

这样是解决浮点数相加的问题。但是,又有同学提出我要一个整型+浮点型的加法函数,于是,我们又写了一个函数add3();,这样实现下去真是无穷无尽啊。而且,时间久了,你知道add()、add1()、add2()、add3()分别是对应那种加法吗?

所以在C++中,引入了函数重载的概念,我同一个函数名可以有不同的函数体,比如实现同样的add函数,在C++中可以这样实现:

int add(int a , int b)
{
    return (a + b);
}

float add(float a , float b)
{
    return (a + b);
}

这样在需要调用的地方我们可以直接sum = add(12, 13);或者sum = add(12.3 + 23.4);都可以返回正确的调用结果。编译器会根据不同的传参来决定调用哪个函数体。

3 函数重载实践

#include <iostream>

using namespace std;

int func(int a , char c )
{
    cout << "我是第一个function" << endl;
    cout << a << c << endl;
    return 0;
}

int func(float x )
{
    cout << "我是第2个function" << endl;
    cout << x << endl;
    return 0;
}

int func(float f , char c ,int x )
{
    cout << "我是第3个function" << endl;
    cout << f << c << x << endl;
    return 0;
}

float func(float f , int x ,char c)
{
    cout << "我是第4个function" << endl;
    cout << f << x << c << endl;
    return 0;
}

int func(int x)
{
    cout << "我是第5个function" << endl;
    //func(12); //错误,不能递归调用自己
    func(12.3f); //正确 可以正常调用
    cout << x << endl;
    return 0;
}

int main()                                                            
{

    func(23, 'b');
    func(12.3f);
    func(12.3, 'b', 12);
    func(12.3, 23, 'x');
    func(88);
    system("pause");
    return 0;
}

运行结果如下:

我是第一个function
23b
我是第2function
12.3
我是第3function
12.3b12
我是第4function
12.323x
我是第5function
我是第2function
12.3
88
请按任意键继续. . .

4 函数重载总结

1、传入的两个参数如 (int a ,char b )和 (char b, int a )都算两个不同的重载函数

2、函数重载可以简化调用

3、函数重载的时候函数体可以是不同的,只要函数名不同就好了,返回值不可以作为函数重载的条件。

4、VS编译器默认浮点数是double

5、重载函数的返回值可以不一样。

6、重载函数中可以继续调用本函数的其他函数体,注意:不能递归调用自己。

猜你喜欢

转载自blog.csdn.net/u014421520/article/details/79876532
今日推荐