编写计算正方体、圆柱体、球体的表面积和体积的类。要去:\n(1)\t这三个类有一个公共的基类;\n(2)\t这三个类计算正方体、圆柱体、球体的表面积和体积的成员函数名字相同;\n(3)\t按照运行时的多态性方法设
时间: 2023-03-16 16:46:17 浏览: 126
定义三个类Point,Circle和Cylinder,Point类为基类,为上述3个类添加计算面积的成员函数Area(),要求函数Area()采用虚函数的形式,并通过基类指针调用虚函数Area()。
5星 · 资源好评率100%
计算正方体、圆柱体、球体的表面积和体积的类应该包括一个公共的基类,这三个类的成员函数名字相同,可以按照运行时的多态性方法实现。具体实现可以参考以下代码:
```
class Shape {
public:
virtual double getVolume() = ;
virtual double getSurfaceArea() = ;
};
class Cube : public Shape {
public:
Cube(double sideLength) : sideLength(sideLength) {}
double getVolume() override {
return sideLength * sideLength * sideLength;
}
double getSurfaceArea() override {
return 6 * sideLength * sideLength;
}
private:
double sideLength;
};
class Cylinder : public Shape {
public:
Cylinder(double radius, double height) : radius(radius), height(height) {}
double getVolume() override {
return 3.14 * radius * radius * height;
}
double getSurfaceArea() override {
return 2 * 3.14 * radius * height + 2 * 3.14 * radius * radius;
}
private:
double radius;
double height;
};
class Sphere : public Shape {
public:
Sphere(double radius) : radius(radius) {}
double getVolume() override {
return 4. / 3. * 3.14 * radius * radius * radius;
}
double getSurfaceArea() override {
return 4 * 3.14 * radius * radius;
}
private:
double radius;
};
```
在这个实现中,我们定义了一个名为Shape的基类,其中包含了两个纯虚函数getVolume和getSurfaceArea,分别用于计算形状的体积和表面积。然后我们分别定义了Cube、Cylinder和Sphere三个派生类,它们都继承自Shape基类,并实现了基类中的两个纯虚函数。在这三个类中,我们使用了不同的公式来计算不同形状的体积和表面积。由于这三个类都继承自Shape基类,并实现了基类中的两个纯虚函数,因此它们可以被当作Shape类型的对象来使用,实现了运行时的多态性。
阅读全文