定义一个Point类,派生出Rectangle和Circle类,计算个派生类对象的面积Area()。 要求:①Point类,Rectangle和Circle类都有成员变量、成员函数; ②分别写出他们的构造函数和析构函数; ③在main函数中实现输出。 ④力争做到数据输入输出的直观性。
时间: 2024-02-28 12:56:30 浏览: 103
好的,我可以帮你解答这个问题。以下是代码实现:
```c++
#include <iostream>
using namespace std;
class Point{
protected:
int x, y;
public:
Point(int x = 0, int y = 0): x(x), y(y){}
~Point(){}
};
class Circle: public Point{
private:
int r;
public:
Circle(int x = 0, int y = 0, int r = 0): Point(x, y), r(r){}
~Circle(){}
double Area(){ return 3.14 * r * r; }
};
class Rectangle: public Point{
private:
int width, height;
public:
Rectangle(int x = 0, int y = 0, int width = 0, int height = 0): Point(x, y), width(width), height(height){}
~Rectangle(){}
double Area(){ return width * height; }
};
int main(){
int x, y, r, width, height;
cout << "请输入圆的坐标和半径:" << endl;
cin >> x >> y >> r;
Circle c(x, y, r);
cout << "圆的面积为:" << c.Area() << endl;
cout << "请输入矩形的坐标和长宽:" << endl;
cin >> x >> y >> width >> height;
Rectangle rct(x, y, width, height);
cout << "矩形的面积为:" << rct.Area() << endl;
return 0;
}
```
在这个程序中,我们定义了一个基类`Point`,它有两个属性:横坐标`x`和纵坐标`y`。然后我们又分别定义了两个派生类:`Circle`和`Rectangle`,它们都继承了基类`Point`。`Circle`类有一个半径属性`r`,而`Rectangle`类有两个属性:宽`width`和高`height`。
派生类中的`Area()`函数分别计算出圆和矩形的面积。在`main()`函数中,我们先要求用户输入圆的坐标和半径,然后创建一个`Circle`对象,并调用其`Area()`函数计算出其面积。接着,我们又要求用户输入矩形的坐标和长宽,创建一个`Rectangle`对象,并调用其`Area()`函数计算出其面积。最后将结果输出。
注意,我们在定义派生类的构造函数时,需要调用基类的构造函数来初始化基类的成员变量。同时,由于这些类没有需要释放的资源,所以它们的析构函数都是空的。
阅读全文