用c++ 设计四个类,一个矩形类,一个三角形类,一个圆形类,一个高度类,再派生出来正方体类,棱柱类和圆柱类,要求包含输入输出求面积和体积的函数
时间: 2024-03-29 08:16:02 浏览: 74
关于C++的类
好的,我可以帮你解答这个问题。
首先,我们定义一个基类 Shape,包含计算面积和体积的虚函数:
```c
class Shape {
public:
virtual double area() = 0;
virtual double volume() = 0;
};
```
然后,我们分别定义矩形类 Rectangle、三角形类 Triangle 和圆形类 Circle,它们都是 Shape 的派生类:
```c
class Rectangle : public Shape {
public:
double length;
double width;
Rectangle(double l, double w) : length(l), width(w) {}
double area() override {
return length * width;
}
double volume() override {
return 0;
}
};
class Triangle : public Shape {
public:
double base;
double height;
Triangle(double b, double h) : base(b), height(h) {}
double area() override {
return 0.5 * base * height;
}
double volume() override {
return 0;
}
};
class Circle : public Shape {
public:
double radius;
Circle(double r) : radius(r) {}
double area() override {
return 3.14 * radius * radius;
}
double volume() override {
return 0;
}
};
```
接着,我们定义高度类 Height,它包含一个 Shape 对象和一个高度值:
```c
class Height {
public:
Shape* shape;
double height;
Height(Shape* s, double h) : shape(s), height(h) {}
double area() {
return shape->area();
}
double volume() {
return height * shape->area();
}
};
```
最后,我们定义正方体类 Cube、棱柱类 Prism 和圆柱类 Cylinder,它们都是 Height 的派生类:
```c
class Cube : public Height {
public:
Cube(double l) : Height(new Rectangle(l, l), l) {}
};
class Prism : public Height {
public:
double width;
double depth;
Prism(double l, double w, double d) : Height(new Rectangle(l, w), d), width(w), depth(d) {}
double area() {
return 2 * (shape->area() + width * height + depth * height);
}
double volume() {
return shape->area() * height;
}
};
class Cylinder : public Height {
public:
double radius;
Cylinder(double r, double h) : Height(new Circle(r), h), radius(r) {}
double area() {
return 2 * shape->area() + 2 * 3.14 * radius * height;
}
double volume() {
return shape->area() * height;
}
};
```
现在我们已经完成了所有类的定义,可以使用它们来计算面积和体积了。例如,计算一个边长为 2 的正方体的体积:
```c
Cube cube(2);
cout << "Cube volume: " << cube.volume() << endl;
```
输出结果为:
```
Cube volume: 8
```
希望这个例子能够帮助你理解如何用 C++ 设计类和继承。
阅读全文