【C++复习】同名函数判断条件(重载,隐藏,覆盖)
1、重载
以下条件要全部满足:
- 函数名相同
以下条件满足其1:
- 函数形参数目不同
- 函数形参类型不同
注意:
- 不看返回值
- 调用形式要不同
-
//下面两个函数不能重载 fun(int a,int b){} fun(int a,int b,int c=0){} //原因:调用fun(1,2)时,以上两个函数都符合调用条件,系统不知道该调用哪个了
-
- 类内函数可用const区分重载
-
//以下两个函数可在类内重载 void fun(int a,int b)const{} void fun(int a,int b){} //类外呢?下面的函数在类外定义,会报错 void fun(int a,int b)const{} //non-member function 'void fun(int, int)' cannot have cv-qualifier
-
2、隐藏
在类的继承中,派生类和基类含有同名函数
判断条件:
- 函数名相同
- 派生类中的同名函数会隐藏基类中的同名函数及其所有的重载形式
注意:
- 其他的不管
3、覆盖
在类的继承中,派生类中的虚函数覆盖了基类中的虚函数
以下条件要全部满足:
- 函数名称相同
- 函数形参类型相同
- 函数形参数目相同
- const也是区分条件。两函数应均为常函数或均不为常函数。
- 函数返回值相同,或函数返回值满足类型兼容性规则
注意:
- 一般在派生类函数中也使用virtual,增强程序可读性(当然不写也行)
- 使用override表示重写虚函数,以便在编译阶段发现错误。(错误:两函数不满足覆盖条件,即函数参数不一致)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】