c++定义一个 Shape 类记录任意形状的位置,并定义一个计算面积的函数和显示图形的形 状及中心位置的函数,这两个函数都是纯虛函数。在 Shape 类的基础上派生出 - ^ Rectangle 类和一个 circle 类,这两个类都有计算面积和是示形状及中心位置的函数。然后在主函数中 用抽象类的指针调用函数来输出相应图形的面积及其显示形状及中心位置。
时间: 2024-01-21 12:18:27 浏览: 77
定义一个形状类(抽象类)以及一个普通成员函数(用来重设形状大小)、两个纯虚成员函数-周长计算函数和面积计算函数
以下是代码实现:
```c++
#include <iostream>
using namespace std;
class Shape {
protected:
double x, y; // 位置坐标
public:
Shape(double x = 0, double y = 0): x(x), y(y) {}
virtual double getArea() = 0; // 纯虚函数
virtual void display() = 0; // 纯虚函数
};
class Rectangle : public Shape {
private:
double width, height;
public:
Rectangle(double x, double y, double w, double h): Shape(x, y), width(w), height(h) {}
double getArea() { return width * height; }
void display() { cout << "Rectangle, center: (" << x << ", " << y << "), width: " << width << ", height: " << height << endl; }
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double x, double y, double r): Shape(x, y), radius(r) {}
double getArea() { return 3.14159 * radius * radius; }
void display() { cout << "Circle, center: (" << x << ", " << y << "), radius: " << radius << endl; }
};
int main() {
Shape* s1 = new Rectangle(0, 0, 2, 3);
s1->display();
cout << "Area: " << s1->getArea() << endl;
Shape* s2 = new Circle(1, 1, 2);
s2->display();
cout << "Area: " << s2->getArea() << endl;
return 0;
}
```
输出结果:
```
Rectangle, center: (0, 0), width: 2, height: 3
Area: 6
Circle, center: (1, 1), radius: 2
Area: 12.5664
```
阅读全文