c语言函数重载编程,C语言到C++(4) - 重载

AAffA0nNPuCLAAAAAElFTkSuQmCC

C++中新增了重载功能,重载分为两部分,函数重载和运算符重载。

1. 函数重载

在C语言编程中,我们经常遇到一组函数完成同一类功能的情况。比如:int MaxInt(int a, int b);long MaxLong(long a, long b);float MaxFloat(float a, float b);

这三个函数的功能都是从a和b中找出大的那个输出。每次遇到这种问题,最麻烦的就是要想三个不同的函数名去命名。如今,在C++中,我们可以让它们共用同一个函数名。int Max(int a, int b);long Max(long a, long b);float Max(float a, float b);

我们来看看它们是如何工作的:#include using namespace std;int Max(int a, int b){    cout < Call Max Int" < b ? a : b;

}long Max(long a, long b){    cout < Call Max Long" < b ? a : b;

}float Max(float a, float b){    cout < Call Max Float" < b ? a : b;

}int main(){    int nA = 1;    int nB = 2;    float fA = 3.0f;    float fB = 4.0f;    long lA = 10;    long lB = 11;    cout <

}

执行结果:

在C++中,允许在同一个作用域中使用同一个函数名定义多个函数,只要这些函数的参数个数或参数类型不同即可。

函数重载注意可以利用参数个数区分

可以利用参数类型区分

不能利用返回值区分

在C++内部,有种能够唯一标识函数的东西叫做函数签名。函数签名与函数名、参数个数和参数类型有着紧密的关系,唯独与返回值无关。道理其实很简单,在调用函数时,如果不接收返回值,比如:int Fun()

{       return 0;

}   long Fun()

{       return 1;

}   void main()

{

Fun();

}

main函数中,我们如何通过返回值判断它调用的是哪个函数呢?如果我们都判断不出,那么计算机如何能够判断的出呢。

2. 运算符重载

在C语言到C++(1) - 基本变化中,我们介绍了cin和cout的使用,其中会用到<>。在C语言中,这两个是位运算符,而到了C++中,它们又增加了表示stream的功能,这就是运算符重载。

我们举一个常用的例子,在C语言中,比较运算符只能比较基本数据类型,如:int a = 0;int b = 1;if(a 

{    // Do something}

但如果我们需要比较两个结构体的大小呢?看看这段代码:#include using namespace std;typedef struct _tagNode{

int m_x;    int m_y;

}Node;bool operator 

{    if ((node1.m_x + node1.m_y) 

{        return true;

}    else

{        return false;

}

}int main(){

Node n1 = { 1, 2 };

Node n2 = { 3, 4 };    if (n1 

{        cout <

}    else

{        cout <

}    return 0;

}

n1和n2是两个Node类型的结构体,我们想要用“

在这个函数的定义中,制定了一个比较两个Node数据类型的规则,就是比较它们两个成员变量之和。程序的执行结果如下:

作者:天花板

链接:https://www.jianshu.com/p/45752a292c2b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值