定义一个基类shape,私有数据为坐标点x,y, 由它派生rectangle类和circle类,它们都有成员函数getarea()求面积。派生类rectangle类有数据:矩形的长和宽;派生类circle类有数据:圆的半径。rectangle类又派生正方形square类,定义各类并测试。输入三组数据,分别是矩形的长和宽、圆的半径、正方形的边长,输出三组数据,分别是矩形、圆、正方形的面积。圆周率按3.14计算
时间: 2023-05-03 17:02:49 浏览: 113
这道题目给定一个基类 Shape,私有数据为坐标点 x 和 y,由它派生出 Rectangle 类和 Circle 类,它们都有成员函数 getarea() 求面积。Rectangle 类有数据:长和宽;Circle 类有数据:圆的半径。Rectangle 类又派生出正方形 Square 类,定义各类并测试。输入三组数据,分别是矩形的长和宽、圆的半径、正方形的边长,输出三组数据,分别是矩形、圆、正方形的面积。圆周率取3.14计算。
相关问题
定义一个基类Shape,在此基础上派生出Rectangle和Circle类,二者都有Getarea()计算对象面积
下面是一个示例代码,实现了Shape基类以及Rectangle和Circle派生类,并且每个类都有GetArea()函数来计算对象面积:
```c++
#include <iostream>
using namespace std;
class Shape
{
public:
virtual double GetArea() = 0;
};
class Rectangle : public Shape
{
private:
double length;
double width;
public:
Rectangle(double l, double w) : length(l), width(w) {}
double GetArea() { return length * width; }
};
class Circle : public Shape
{
private:
double radius;
public:
Circle(double r) : radius(r) {}
double GetArea() { return 3.1415926 * radius * radius; }
};
int main()
{
Shape* shape1 = new Rectangle(5, 10);
Shape* shape2 = new Circle(3);
cout << "Rectangle area: " << shape1->GetArea() << endl;
cout << "Circle area: " << shape2->GetArea() << endl;
delete shape1;
delete shape2;
return 0;
}
```
在上面的代码中,Shape是一个纯虚基类,它提供了一个GetArea()函数但没有实现。Rectangle和Circle派生类都实现了这个函数,并且在main函数里我们创建了一个Rectangle对象和一个Circle对象,并分别调用它们的GetArea()函数来计算它们的面积。注意,我们使用了Shape指针来指向Rectangle和Circle对象,这是因为Shape是一个基类,它的指针可以指向任何派生类对象。
定义一个基类Shape,在此基础上派生出Rectangle和Circle类,二者都有GetArea()计算对象的面积。
下面是代码实现:
```python
class Shape:
def __init__(self):
pass
def GetArea(self):
pass
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def GetArea(self):
return self.width * self.height
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def GetArea(self):
return 3.14 * self.radius ** 2
```
在这里,我们定义了一个基类 `Shape`,并且把 `Rectangle` 和 `Circle` 派生出来。`Shape` 类中只有一个空的初始化函数和一个 `GetArea` 方法,没有具体实现。而 `Rectangle` 和 `Circle` 类则分别实现了自己的构造函数和 `GetArea` 方法。
`Rectangle` 类中,我们定义了一个 `width` 和 `height` 属性,构造函数中传入这两个参数,并且在 `GetArea` 方法中返回面积。同理,`Circle` 类中,我们定义了一个 `radius` 属性,构造函数中传入这个参数,并且在 `GetArea` 方法中返回面积。