构造一个类Geometry及其派生类,该类主要实现关于几何图形的基本操作。对于基类“几何图形”,有求面积、求周长的函数(纯虚函数),其派生类圆和矩形主要有初始化(构造函数),求(表)面积,求周长操作,试在主函数中分别定义圆、矩形的对象,在main中给初值,并调用其成员函数实现其相应操作。
时间: 2023-06-26 16:08:55 浏览: 131
设计基类点类(Point)、直接派生类圆类(Circle)、间接派生类圆柱体类(Cylinder),将求面积的函数(area)声明成虚函数,并在主函数实现虚函数
以下是实现上述要求的代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class Geometry {
public:
virtual double getArea() const = 0; // 求面积(纯虚函数)
virtual double getPerimeter() const = 0; // 求周长(纯虚函数)
};
class Circle : public Geometry {
public:
Circle(double r) : radius(r) {} // 构造函数
double getArea() const { // 求面积
return M_PI * radius * radius;
}
double getPerimeter() const { // 求周长
return 2 * M_PI * radius;
}
private:
double radius; // 半径
};
class Rectangle : public Geometry {
public:
Rectangle(double l, double w) : length(l), width(w) {} // 构造函数
double getArea() const { // 求面积
return length * width;
}
double getPerimeter() const { // 求周长
return 2 * (length + width);
}
private:
double length, width; // 长和宽
};
int main() {
Circle c(5.0);
Rectangle r(3.0, 4.0);
cout << "Circle: area = " << c.getArea() << ", perimeter = " << c.getPerimeter() << endl;
cout << "Rectangle: area = " << r.getArea() << ", perimeter = " << r.getPerimeter() << endl;
return 0;
}
```
以上代码定义了一个基类 `Geometry`,包含纯虚函数 `getArea()` 和 `getPerimeter()`,分别用于求几何图形的面积和周长。然后定义了两个派生类 `Circle` 和 `Rectangle`,分别表示圆和矩形。这两个派生类都重写了基类的纯虚函数,并实现了相应的功能。在主函数中,分别创建了一个圆和一个矩形对象,并调用了它们的成员函数求出了面积和周长,并输出了结果。
阅读全文