C++ 重载、重写、隐藏

重载 overload

定义:函数名相同,函数的参数个数、参数类型或参数顺序三者中必须至少有一种不同。调用时,编译器能够判断在哪种情况下调用哪种方法。

阶段:编译时。

目的:把函数本身作为一个概念抽象出来,基于不同形参给出不同实现以实现多态,实现静多态的一种技术。


重写/覆盖 override

定义:子类重写从基类继承过来的函数,函数名、返回值、参数列表都必须和基类相同。

一般发生在子类和父类继承关系之间。子类重新定义父类中有相同名称和参数的虚函数。

阶段:运行时。编译器判断可以优化时,会提前到编译时,以提高性能。

目的:实现运行时多态机制。

关键字override。确保派生类函数被改写,且符合规则,防止意外重写。

关键字final。应用于虚函数,阻止它在派生类中被改写。应用于类,该类不能被继承。


隐藏hide、重定义redefining

隐藏和重定义是一个意思。

定义:派生类会隐藏基类的同名函数,无论返回值和参数列表是否相同。

阶段:编译时

目的:为了避免“非恶意性的错误”,向前兼容。避免派生类新增的接口对基类的影响。


refer

https://blog.csdn.net/jinvmen/article/details/48311445

posted @   天下太平  阅读(77)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示