C++ 重载

博客介绍了函数重载,即在同一作用域内有相同函数名、不同参数列表的函数。阐述了重载的好处,如减少函数名数量、方便构造函数使用、丰富操作符含义等。还说明了编译器识别重载函数的方式及匹配规则,包括精确匹配、提升匹配等。

什么是函数重载

函数重载是指在同一作用域内可以有一组具有相同函数名不同参数列表的函数,这组函数被称为重载函数。重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处

为什么要重载

同名同功能函数:相同功能函数可以由相同名字。
类的构造函数:也就是说:构造函数都同名。如果没有函数重载机制,要想实例化不同的对象,那是相当的麻烦!
操作符重载:本质上就是函数重载,它大大丰富了已有操作符的含义,方便使用,如+可用于连接字符串等!
 

编译器如何识别重载函数:

C++编译器是同过“作用域+返回类型+函数名+参数列表”构成函数标签加以区分重载函数

使用反汇编可执行文件可以查看重载函数的标签组成

编译器是如何匹配

精确匹配:参数匹配而不做转换,或者只是做微不足道的转换,如数组名到指针、函数名到指向函数的指针、T到const T;
提升匹配:即整数提升(如bool 到 int、char到int、short 到int),float到double
使用标准转换匹配:如int 到double、double到int、double到long double、Derived*到Base*、T*到void*、int到unsigned int;
使用用户自定义匹配;
使用省略号匹配:类似printf中省略号参数
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值