简述一下C++中的多态及实现方式
时间: 2024-11-18 13:16:21 浏览: 6
C++中的多态主要体现在两个层面:编译时多态(静态多态)和运行时多态(动态多态)。
1. **编译时多态(函数重载)**: C++允许我们为同一个函数名提供多个实现,只要它们有不同的参数列表。当我们调用这个函数时,编译器会根据传入的实际参数类型自动匹配相应的实现。这是一种预处理器级的多态性,不需要特殊语法,例如:
```cpp
void print(int num) { /* ... */ }
void print(double value) { /* ... */ }
print(5); // 输出整型版的print
```
2. **运行时多态(动态多态)**: 主要通过虚函数(virtual function)和虚继承来实现。当基类指针或引用指向派生类对象时,调用的实际上是基类的虚函数,在运行时根据实际对象类型执行正确的函数。比如:
```cpp
class Base {
public:
virtual void display() { cout << "Base" << endl; }
};
class Derived : public Base {
public:
void display() override { cout << "Derived" << endl; }
};
Base* basePtr = new Derived(); // 指向Derived实例
basePtr->display(); // 输出 "Derived"
```
在这里,`display`是虚函数,虽然调用的是基类指针,但运行时实际上执行的是派生类的版本。
这两种多态性提供了程序设计的灵活性,使得代码能更好地应对复杂情况和未来扩展。
阅读全文