C++函数重载

在C语言中,为不同数据类型编写相同功能的函数会导致代码重复和效率降低。C++引入了函数重载,允许使用相同的函数名但通过不同的参数列表来区分。这提高了代码的可读性和灵活性,使得编译器能根据参数自动选择合适的函数进行调用,实现静态多态性。
摘要由CSDN通过智能技术生成

1.问题引入:

在我们实际开发中,有时候我们需要实现几个功能类似的函数,这几个函数只是有一些比较小的区别。比如我们想要交换两个变量的值,这两个变量有多种类型,int float char bool 等等,把这些参数的地址 传递到函数的内部,在C语言中,我们需要设计出三个不同名的函数,函数原型基本类似,这样写的话比较繁琐,而且效率不高,示例如下

#include <stdio.h>
int swap1(int *a,int *b)
{
    int temp = *a;
    *a = *b;
    *b = temp;   
}
int swap2(char *a,char *b)
{
    char temp = *a;
    *a = *b;
    *b = temp;   
}
int swap3(float *a,float *b)
{
    float temp = *a;
    *a = *b;
    *b = temp;   
}
int  main()
{
    int a = 10,b=20;
    swap1(&a,&b);
    char ca = '1',cb = '2';
    swap2(&ca,&cb);
    float  fa = 10.5,fb = 20.5;
    swap3(&fa,&fb);
}

而在C++中,引入了一种解决方法,就是函数重载

  1. 函数重载概念

用相同的函数名定义多个不同的功能 称之为函数重载。重载的函数可以根据参数的个数和类型进行区分,但是不能仅仅根据返回值类型来区分。

#include<iostream>

using namespace std;

int swap(int *a,int *b)
{
    int temp = *a;
    *a = *b;
    *b = temp;   
}
int swap(int &a,int &b)
{
    int temp = a;
    a = b;
    b = temp;   
}
int swap(char *a,char *b)
{
    char temp = *a;
    *a = *b;
    *b = temp;   
}
int swap(float *a,float *b)
{
    float temp = *a;
    *a = *b;
    *b = temp;   
}

int main()
{
    int  ia=10,ib=20;
    char ca='a',cb='b';
    float fa=10.5,fb=20.5;
    
    //在函数调用的时候会根据不同的参数列表选择调用对应的函数
    swap(ia,ib);
    swap(&ia,&ib);
    swap(&ca,&cb);
    swap(&fa,&fb);
    cout<<"ia:"<<ia<<" ib:"<<ib<<endl;
    
    
    return 0;
}
  1. 函数重载的规则

  • 函数名字必须相同

  • 参数列表必须不同(个数不同、类型不同、参数排列顺序不同)

  • 函数的返回值类型可以相同也可以不相同,但是如果仅仅是 返回值类型不同 不足以 让这些函数重载

  • 在C++中 编译器会检查函数名字和参数列表,在C语言中编译器只会检查函数名字

  1. 函数重载的作用

  • 解决函数名字资源问题

  • 函数调用的时候很方便,自动根据不同的参数调用的不同的函数(静态多态)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值