1.定义一个Point类,派生出Rectangle类和Circle类,计算各派生类对象的面积Area()
时间: 2023-11-28 19:50:30 浏览: 89
以下是一个可能的实现:
```cpp
#include <iostream>
using namespace std;
class Point {
protected:
double x, y;
public:
Point(double x, double y) : x(x), y(y) {}
virtual double Area() const = 0; // 纯虚函数
};
class Rectangle : public Point {
private:
double width, height;
public:
Rectangle(double x, double y, double w, double h)
: Point(x, y), width(w), height(h) {}
virtual double Area() const override {
return width * height;
}
};
class Circle : public Point {
private:
double radius;
public:
Circle(double x, double y, double r) : Point(x, y), radius(r) {}
virtual double Area() const override {
return 3.1415926 * radius * radius;
}
};
int main() {
Rectangle rect(0, 0, 3, 4);
Circle circle(0, 0, 2);
cout << "Rectangle area: " << rect.Area() << endl;
cout << "Circle area: " << circle.Area() << endl;
return 0;
}
```
这里定义了一个抽象的 Point 类,包含了所有点的共同属性。Rectangle 类和 Circle 类都派生自 Point 类,并分别添加了自己的属性和计算面积的方法。由于 Point 类的 Area() 方法没有实现,所以它也成为了一个抽象类,无法实例化。在 main 函数中,我们创建了一个 Rectangle 对象和一个 Circle 对象,并调用它们的 Area() 方法计算出面积。
阅读全文