c++函数重载

2023-12-20 13:58:04

1. 在c++中可以定义一些同名函数,为函数重载? -- C语言是不支持的。

2. 有时候我们想要通过函数去实现类似的操作,比如:

? ? ? ? ? ?我们封装了一个两整数数相加的函数sum(int x, int y)。? ? ? ? ? ? 但是因为后来需求,需要计算三个整数的和,或者浮点数的和,在c语言中我们只能定义一个

sum1(或者其它与sum名字不同的函数),那如果我们后面再有计算四个整数的需求等等。。。。。

在C语言中只能定义多个名字相差不多的函数,它们实现的功能是极其类似的,只是计算的个数或者类型不同而已,定义那么多函数显然不方便。

在c++中可以实现函数重载,类似功能的函数的函数名是一样的(例如:求和都是sum),但是传入的参数的个数或者参数的类型是不同的,编译器通过这个区别来找你到底使用的是哪个函数的重载

#include <iostream>
#include <Windows.h>

using namespace std;

/*c++函数重载: 根据参数类型和参数个数不同,但是不能根据返回值类型实现函数重载*/

/*计算两个整数型的数值和的函数*/
int add(int a, int b)
{
    cout << "调用add的版本1" << endl;
    return a + b;
}

/*计算三个整数型的数值和的函数*/
int add(int a, int b, int c)
{
    cout << "调用add的版本2" << endl;
    return a + b + c;
}

/*计算两个浮点数的数值和的函数*/
float add(float a, float b)
{
    cout << "调用add的版本3" << endl;
    return a + b;
}

int main(void)
{
    cout << add(1, 2) << endl;

    cout << add(1.0f, 2.0f) << endl;

    system("pause");

    return 0;
}

以上代码就是先了add求和函数的重载 。

函数重载注意事项:

1. 函数重载只能通过参数类型和参数个数不同来实现,不能通过返回值类型不同来实现

2. 在定义浮点数类型使用重载时.

? ? ? ?例:? sum(int a,int b);

? ? ? ? ? ? ? sum(float a,float b)? ? 当我们调用这个重载时? sum(1.1,1.2); 编译器会报错。

? ? ? 原因: 因为你定义的重载是float类型,但是1.1,1.2等浮点数常量默认为double类型,编译器去? ? ? ? ? ? ? ? ? ?找重载发现没有符合要求的自然报错。

? ? ? ? ? ? ? ?sum(1.1f,1.2f); // 这样就可以了。

3. 当函数的参数有默认值的时候需要注意。

? ? ? ? ?例: sum(int a, int b);? ? sum(int a,int b ,int c = 3);

? ? ? ? ? ? ? ? 上面是参数个数不同产生的重载-- 当我们带调用时第一个时-- sum(1,2)这样就会出错,因为第二个函数重载因为第三个参数有默认值,也可以使用sum(1,2)来调用,这样编译器就不知道调用哪个了,就会出错。

文章来源:https://blog.csdn.net/weixin_68026222/article/details/135104724
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。