声明一个Shape抽象类,在此基础上派生出矩形Rectangle和圆Circle类,二者都有GetArea( )函数计算对象的面积,GetPerim( )函数计算对象的周长。完成类的设计,其中PI取3.14159。 主程序如下(不能修改): int main() {
时间: 2024-02-05 12:11:16 浏览: 81
下面是一个可能的实现,包括Shape抽象类和Rectangle、Circle类的定义:
```c++
#include<iostream>
using namespace std;
const double PI = 3.14159;
class Shape {
public:
virtual double GetArea() = 0;
virtual double GetPerim() = 0;
};
class Rectangle : public Shape {
private:
double length;
double width;
public:
Rectangle(double l, double w):length(l), width(w) {}
double GetArea() {
return length * width;
}
double GetPerim() {
return 2 * (length + width);
}
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r):radius(r) {}
double GetArea() {
return PI * radius * radius;
}
double GetPerim() {
return 2 * PI * radius;
}
};
int main() {
Shape* s1 = new Rectangle(5, 10);
cout << "Rectangle Area: " << s1->GetArea() << ", Perimeter: " << s1->GetPerim() << endl;
Shape* s2 = new Circle(3);
cout << "Circle Area: " << s2->GetArea() << ", Circumference: " << s2->GetPerim() << endl;
delete s1;
delete s2;
return 0;
}
```
在主程序中,我们创建了一个Rectangle对象和一个Circle对象,并通过Shape指针调用它们的GetArea和GetPerim函数,得到了它们的面积和周长。需要注意的是,由于Shape是抽象类,因此我们不能直接创建Shape对象,而只能通过指向派生类对象的指针来访问虚函数。在使用完对象后,我们需要手动释放内存。
阅读全文