C++怎么实现多态?
时间: 2024-09-28 15:15:25 浏览: 50
在C++中,实现多态主要有两种方式:静态多态(编译时多态)和动态多态(运行时多态)。
1. **静态多态(函数重载)**:通过在同一作用域内提供具有相同名称但参数列表不同的函数,编译器会根据函数参数的类型和数量选择正确的函数。这是通过模板和函数重载来完成的。
```cpp
void print(int num) { std::cout << "Integer: " << num << std::endl; }
void print(double num) { std::cout << "Double: " << num << std::endl; }
// 调用时编译器自动匹配
print(5); // 输出 Integer: 5
print(3.14); // 输出 Double: 3.14
```
2. **动态多态(虚函数和继承)**:这是通过虚函数和指针/引用来实现的,主要涉及基类和派生类的关系。当你有一个指向基类类型的指针,并想通过这个指针调用派生类的方法时,就显示了动态多态性。
```cpp
class Base {
public:
virtual void show() {
std::cout << "Base class" << std::endl;
}
};
class Derived : public Base {
public:
virtual void show() override {
std::cout << "Derived class" << std::endl;
}
};
// 创建基类指针并指向派生对象
Base* derivedObj = new Derived();
derivedObj->show(); // 输出 Derived class (运行时确定调用哪个版本)
delete derivedObj;
```
阅读全文