【C/C++】3.面向对象编程的特性之多态
在C++中实现多态有两种主要方式:
-
编译时多态(静态多态):通常通过函数重载和运算符重载来实现。这种多态在编译时已经确定,不需要虚函数。
-
运行时多态(动态多态):通过虚函数和继承来实现。这种多态在运行时根据实际的对象类型决定调用哪个函数。
1. 重写/覆盖(Override)
- 定义:重写是指在派生类中重新实现基类中的虚函数。
- 特点:
- 函数签名(函数名、参数类型和返回类型)必须和基类中的虚函数完全一致。
- 主要用于实现运行时多态。
- 必须在基类的虚函数前加
virtual
关键字,子类可以选择性地加override
关键字明确表示重写。
- 作用:通过基类指针调用重写的虚函数时,会根据对象的实际类型选择合适的函数。
示例:
2. 重载(Overload)
- 定义:重载是指在同一作用域中定义多个同名但参数列表不同的函数。
- 特点:
- 函数名相同,但参数个数或类型必须不同。
- 可以在同一个类中,或在基类与派生类之间。
- 重载在编译时根据函数的参数列表来决定调用哪个函数,是一种静态多态。
- 作用:提高函数的灵活性和代码可读性,允许使用相同函数名进行不同操作。
示例:
分类:
面试知识准备
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库