运用c++定义一个Point类,派生出Rectangle和Circle类,计算个派生类对象的面积Area()。 要求:①Point类,Rectangle和Circle类都有成员变量、成员函数; ②分别写出他们的构造函数和析构函数; ③通过point的坐标计算面积。 ④在main函数中实现输出。
时间: 2024-02-18 07:02:49 浏览: 73
好的,我会尽力回答您的问题。下面是我实现的代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class Point {
protected:
double x, y;
public:
Point(double x = 0, double y = 0) {
this->x = x;
this->y = y;
}
virtual ~Point() {}
double getX() const {
return x;
}
double getY() const {
return y;
}
};
class Rectangle : public Point {
private:
double width, height;
public:
Rectangle(double x = 0, double y = 0, double width = 0, double height = 0) : Point(x, y) {
this->width = width;
this->height = height;
}
~Rectangle() {}
double getWidth() const {
return width;
}
double getHeight() const {
return height;
}
double Area() const {
return width * height;
}
};
class Circle : public Point {
private:
double radius;
public:
Circle(double x = 0, double y = 0, double radius = 0) : Point(x, y) {
this->radius = radius;
}
~Circle() {}
double getRadius() const {
return radius;
}
double Area() const {
return M_PI * pow(radius, 2);
}
};
int main() {
Rectangle r(0, 0, 5, 3);
Circle c(0, 0, 2);
cout << "The area of the rectangle is: " << r.Area() << endl;
cout << "The area of the circle is: " << c.Area() << endl;
return 0;
}
```
在这个代码中,我们定义了一个Point类作为基类,然后派生出Rectangle和Circle类。在Rectangle和Circle类中,我们分别定义了它们的成员变量和成员函数,并且实现了Area()函数用于计算面积。在main函数中,我们创建了一个Rectangle对象和一个Circle对象,并输出它们的面积。
需要注意的是,我们在Point类中定义了虚析构函数,这是因为我们在Rectangle和Circle类中使用了多态性,如果不定义虚析构函数,可能会导致内存泄露。
阅读全文