首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ 函数重载

C++ 函数重载

作者头像
chaibubble
发布2019-05-26 19:48:12
5190
发布2019-05-26 19:48:12
举报

C++允许用同一个函数名定义多个函数,而这些函数的参数个数和参数类型可以不相同。这就是函数重载。

注意是个数和类型都能不同

其意义在于,如果想要实现一个功能,但是由于变量类型不同或参数个数不同的情况,需要定义不同名称的功能相同的函数,而函数重载功能可以允许用户只定义一个函数名,这个函数名有多个不同的含义,使得一个函数名可以多用,而在调用该函数时,系统会根据实参类型和个数的不同自动找到与之匹配的函数,然后调用该函数。

所以,函数重载功能的本质是可以只用一个函数名(重载它),但是想要给这个函数名赋予多个不同的含义,还是要定义。比如要实现一个找最大值的功能,但是实参可能是int 或double类型,那么还是要定义两个不同的函数,只是他们用了同一个名字,如下: 其实c++为了解决这个问题,提供了另一个函数模板功能: http://blog.csdn.net/chaipp0607/article/details/55546582

int max(int a,int b,int c)
{  
    if (b>a) a=b;
    if (c>a)  a=c;
    return a;
}
double max(double a,double b,double c)
{
    if (b>a) a=b;
    if (c>a)  a=c;
    return a;
}

举个例子:函数参数个数相同,但是参数类型不同

#include <iostream>  
using namespace std;  
int main( )  
{  
    int max(int a,int b,int c);
    double max(double a,double b,double c);
    int i =1;
    int j =2;
    int k =3;
    int l = max(i,j,k);
    cout <<l<<endl;
    double q =1.11;
    double w =2.21;
    double e =3.31;
    double r = max(q,w,e);
    cout <<r<<endl;
    getchar();
    return 0;  
}  

int max(int a,int b,int c)
{  
    if (b>a) a=b;
    if (c>a)  a=c;
    return a;
}
double max(double a,double b,double c)
{
    if (b>a) a=b;
    if (c>a)  a=c;
    return a;
}

运行结果: 3 3.31

举个例子:函数参数个数不同,参数类型相同

#include <iostream>  
using namespace std;  
int main( )  
{  
    int max(int a,int b);
    int max(int a,int b,int c);
    int i =1;
    int j =2;
    int k =3;
    int m = max(i,j);
    int l = max(i,j,k);
    cout <<m<<endl;
    cout <<l<<endl;
    getchar();
    return 0;  
}  

int max(int a,int b)
{  
    if (b>a) a=b;
    return a;
}
int max(int a,int b,int c)
{  
    if (b>a) a=b;
    if (c>a)  a=c;
    return a;
}

运行结果: 2 3

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年02月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档