【C/C++】3.面向对象编程的特性之多态
在C++中实现多态有两种主要方式:
-
编译时多态(静态多态):通常通过函数重载和运算符重载来实现。这种多态在编译时已经确定,不需要虚函数。
-
运行时多态(动态多态):通过虚函数和继承来实现。这种多态在运行时根据实际的对象类型决定调用哪个函数。
1. 重写/覆盖(Override)
- 定义:重写是指在派生类中重新实现基类中的虚函数。
- 特点:
- 函数签名(函数名、参数类型和返回类型)必须和基类中的虚函数完全一致。
- 主要用于实现运行时多态。
- 必须在基类的虚函数前加
virtual
关键字,子类可以选择性地加override
关键字明确表示重写。
- 作用:通过基类指针调用重写的虚函数时,会根据对象的实际类型选择合适的函数。
示例:
2. 重载(Overload)
- 定义:重载是指在同一作用域中定义多个同名但参数列表不同的函数。
- 特点:
- 函数名相同,但参数个数或类型必须不同。
- 可以在同一个类中,或在基类与派生类之间。
- 重载在编译时根据函数的参数列表来决定调用哪个函数,是一种静态多态。
- 作用:提高函数的灵活性和代码可读性,允许使用相同函数名进行不同操作。
示例: