C++函数重载

函数重载是C++的特性,而C语言没有这种特性。

什么是函数重载?
支持相同函数名,不同参数列表的函数同时存在,而在C语言中会报错。

例如:

void testFun();

void testFun(int param);

void testFun(int param, bool flag);

void testFun(bool flag, int param);

以上函数在C++中能够同时存在,这种现象叫函数重载。

函数重载定义
C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。

调用同名函数时,编译器如何区分该调用哪一个
大家第一次接触到函数重载可能会有疑问,同名函数在被调用时,编译器是如何区分该调用哪一个函数的?

那是因为,C++编译器在编译之前有个重命名的阶段,就是把所有的函数重新取名。

这个重新取名的规则就是:(原函数名+参数列表)*每个编译器独有的运算公式

例如:

void fun1(); -> ?fun1@YAHHH@Z

void fun1(int a); -> ?fun1@YAGGG@Z

void fun1(double b, float c); -> ?fun1@YADDD@Z

所以,这三个函数虽然同名,但是由于他们的参数列表不同,经过编译器的重新命名之后得到的新名称完全不一样。所以,C++支持同名函数。(每个编译器重命名的规则不一定相同)

函数重载的用途
重载函数常用来实现功能类似而所处理的数据类型不同的问题。

例如:

void praseData(Class1 param);    //解析Class1类型的数据

void praseData(Class2 param);    //解析Class2类型的数据

void praseData(Class3 param);    //解析Class3类型的数据

上诉三个函数,功能相同,都是解析数据,但是类型不同,使用重载函数可以增强代码可阅读性。

注意:

void testFun(int param);
int testFun(int param);

这两种函数不是函数重载,函数重载必须参数列表不同。

-------------------------我是分割线-------------------------------
免费分享C++全套书籍和全套视频
请扫码回复关键字“C++”领取
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值