C++中, 我怎么运用多态的特性去代替很多的if else和Switch case, 让代码看起来干净清爽, 并举例
时间: 2024-03-16 21:42:23 浏览: 116
C++ 多态的几种方法和代码示例
在C++中,可以使用多态的特性通过一个共同的基类来实现替代 if else 和 switch case 语句的效果。下面是一个使用多态的例子:
```cpp
class Shape {
public:
virtual double area() = 0;
};
class Rectangle : public Shape {
public:
double width, height;
double area() override { return width * height; }
};
class Circle : public Shape {
public:
double radius;
double area() override { return 3.1415926 * radius * radius; }
};
int main() {
Shape *rect = new Rectangle{3.0, 4.0};
Shape *circ = new Circle{5.0};
std::vector<Shape *> shapes{rect, circ};
for (auto shape : shapes) {
std::cout << "Area: " << shape->area() << std::endl;
}
delete rect;
delete circ;
return 0;
}
```
在这个例子中,我们定义了一个`Shape`基类,它包含了一个纯虚函数`area()`。然后,我们定义了两个派生类`Rectangle`和`Circle`,分别实现了`area()`函数。在主函数中,我们创建了一个`Rectangle`和一个`Circle`的实例,并将它们存储在一个`Shape`类型的指针数组中。然后,我们通过循环调用每个实例的`area()`函数来计算它们的面积。
通过多态,我们可以将不同的对象视为一个共同的基类,从而避免了一大堆的 if else 或 switch case 语句,使代码更加清晰和可扩展。
阅读全文