函数重载与默认参数

本文探讨了C++中函数重载的目的、实现方式和注意事项,强调了名称压轧技术和重载依据,如参数类型、个数和顺序。同时,介绍了函数默认参数的设置规则,提醒注意避免二义性。对于常量对象,文章指出它们只能调用常成员函数。此外,还讨论了函数声明与定义的一致性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两个问题都要注意二义性

函数重载

目的

定义一族函数,方便使用的程序员

实现

顺序
严格类型匹配
相容类型匹配
用户定义类型转换
相容类型

比方说,int、char、bool、enum这堆数据类型就是相容类型,double、float也是相容类型。

实现原理
名称压轧技术

简单来说就是编译前的一种预处理,给每个函数加函数特征再编译

函数特征(重载依据)

参数类型
常指针和常引用也是一种新的类型,但常量不是

在有常指针和指针,常引用和引用的时候。
常量对象优先调用使用常指针、常引用的重载函数
变量对象优先调用使用普通指针、普通引用的重载函数

参数个数
参数顺序

也要配合函数默认参数来考虑二义性

常成员函数与非常成员函数

注意

重载是指在一个作用域内的

不同作用域的就不是重载了,而是覆写

返回值类型不能作为函数特征

重载函数只关心传进去了什么,不关心会返回些什么

常量对象

常量对象只能调用常成员函数
(可以理解成是this指针权限下放问题)

函数默认参数

顺序

默认从右端开始设置函数默认参数,匹配从左端开始
没有被覆盖就是默认参数,被覆盖了就用新传进来的参数

一定要注意二义性

搭配函数重载来看

函数定义和函数声明不一样怎么办?

看函数声明

定义时省略名称

主要是修改函数的时候,可能接口有一个不再需要了,但是为了避免对使用函数的代码改动
函数定义的时候就算省略了这个参数名称,但是使用的时候也必须给出(哪怕它毫无意义了)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值