1. 设计一个基类,从基类派生圆,从圆派生圆柱,设计成员函数输出它们的面积和体积。
时间: 2024-10-20 17:16:38 浏览: 22
在C++中,你可以创建一个基类,然后为圆形(Circle)和圆柱形(Cylinder)分别定义派生类。这里是一个简单的例子,使用抽象基类来表示几何形状,以及继承和重写虚函数的方法:
```cpp
#include <iostream>
// 基类Shape,包含面积计算但不提供具体值
class Shape {
public:
virtual double getArea() const = 0; // 抽象方法,必须被派生类覆盖
protected:
// 如果需要共有的数据或成员函数,可以放在这里
};
// 圆形Circle派生自Shape,添加半径并实现getArea方法
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double getArea() const override { return M_PI * radius * radius; }
void printDetails() {
std::cout << "Circle: Area = " << getArea() << std::endl;
}
};
// 圆柱形Cylinder派生自Shape,添加底半径和高度并实现getArea和getVolume方法
class Cylinder : public Shape {
private:
double base_radius;
double height;
public:
Cylinder(double br, double h) : base_radius(br), height(h) {}
double getArea() const override {
return M_PI * (base_radius * base_radius + 2 * base_radius * height);
}
double getVolume() const {
return M_PI * base_radius * base_radius * height;
}
void printDetails() {
std::cout << "Cylinder: Area = " << getArea() << ", Volume = " << getVolume() << std::endl;
}
};
int main() {
Circle circle(5);
circle.printDetails(); // 输出圆的面积
Cylinder cylinder(3, 7);
cylinder.printDetails(); // 输出圆柱的面积和体积
return 0;
}
```
在这个例子中,`Shape`是基类,而`Circle`和`Cylinder`是从`Shape`派生的两个类。每个派生类都实现了`getArea()`方法,根据各自的几何属性计算面积。`printDetails()`方法用于显示各自图形的面积或体积。
阅读全文