如果有多个子类有相同成员函数,通过父类类型的对象依次指向多个子类,如何在最后输出多个子类中的某些数据
时间: 2024-10-14 07:09:02 浏览: 9
C++对象的内存布局[归纳].pdf
如果有多个子类共享相同的成员函数,并且你想通过父类类型的指针依次访问并输出每个子类中的特定数据,你可以利用多态和虚函数的概念。首先,在父类中声明这个成员函数为虚函数(virtual function),然后在各个子类中提供各自的实现。
假设有一个基础的类`Shape`,以及两个继承自它的子类`Circle`和`Rectangle`,它们都有一个计算面积的方法`calculateArea()`。下面是简化的代码示例:
```cpp
class Shape {
public:
virtual double calculateArea() const = 0; // 虚函数声明
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double calculateArea() const override { return M_PI * radius * radius; }
};
class Rectangle : public Shape {
private:
double width, height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double calculateArea() const override { return width * height; }
};
int main() {
Shape* shapes[2] = {new Circle(5), new Rectangle(4, 6)}; // 存储不同类型对象的数组
for (Shape* shape : shapes) {
cout << "Area of the shape: " << shape->calculateArea() << endl;
}
return 0;
}
```
当你遍历`shapes`数组时,由于`calculateArea()`是虚函数,每次调用会根据实际的子类类型执行相应的子类方法。这样,你就可以分别得到每个形状的面积。
阅读全文