1. 定义一个基本形状类Shape, 该类有求表面积( GetSurface) 和体积(GetVolume)两个纯虚函数;由该类派生球体(Sphere),正方体(Cube),程序中通过基类指针来调用派生类中的虚函数,计算出球体,正方体的表面积和体积,并在main()中给出测试用例。
时间: 2024-03-14 08:45:22 浏览: 88
好的,这是一个面向对象的编程问题。
首先,我们需要定义一个基本形状类 `Shape`,它有两个纯虚函数 `GetSurface` 和 `GetVolume`,用于求表面积和体积。代码如下:
```c++
class Shape {
public:
virtual double GetSurface() = 0;
virtual double GetVolume() = 0;
};
```
然后,我们需要由该类派生出球体 `Sphere` 和正方体 `Cube`。这两个类都需要实现基类的两个纯虚函数,并且需要定义自己的成员变量和函数。代码如下:
```c++
class Sphere : public Shape {
public:
Sphere(double radius) : radius_(radius) {}
virtual double GetSurface() {
return 4 * 3.1415926 * radius_ * radius_;
}
virtual double GetVolume() {
return 4 / 3 * 3.1415926 * radius_ * radius_ * radius_;
}
private:
double radius_;
};
class Cube : public Shape {
public:
Cube(double length) : length_(length) {}
virtual double GetSurface() {
return 6 * length_ * length_;
}
virtual double GetVolume() {
return length_ * length_ * length_;
}
private:
double length_;
};
```
在 main() 函数中,我们可以定义基类指针,并通过这个指针调用派生类中的虚函数,计算出球体和正方体的表面积和体积。代码如下:
```c++
int main() {
// 创建球体和正方体对象
Sphere sphere(2.0);
Cube cube(3.0);
// 通过基类指针调用派生类中的虚函数
Shape* pShape;
pShape = &sphere;
cout << "Sphere Surface: " << pShape->GetSurface() << endl;
cout << "Sphere Volume: " << pShape->GetVolume() << endl;
pShape = &cube;
cout << "Cube Surface: " << pShape->GetSurface() << endl;
cout << "Cube Volume: " << pShape->GetVolume() << endl;
return 0;
}
```
输出结果如下:
```
Sphere Surface: 50.265482
Sphere Volume: 33.51032266666667
Cube Surface: 54
Cube Volume: 27
```
这样,我们就完成了这个问题的解答。
阅读全文