设计一个抽象类Shape,其中包括double area和double Area(); 以public方式从Shape派生出Circle和Rectangle两个派生类,添加相关的数据成员(Circle: radius,PI; Rectangle:width,height)、有参构造函数、重写Area函数; 设计主函数:要求定义一个4元素Shape类指针数组,数组元素初始化为NULL,动态创建2个Circle对象和2个Rectangle对象,用上面的指针数组操作4个对象,设计循环求算它们的面积并显示。 主函数圆半径和矩形长宽设置为: Circle a(1),b(2); Rectangle c(1,2),d(3,4);
时间: 2023-06-05 08:07:18 浏览: 155
好的,我会按照您的要求进行回答。以下是对您提出的问题的回答:
设计一个抽象类Shape,其中包括double area和double Area(); 以public方式从Shape派生出Circle和Rectangle两个派生类,添加相关的数据成员(Circle: radius,PI; Rectangle:width,height)、有参构造函数、重写Area函数;
```
class Shape{
public:
virtual double Area() = 0;
double area;
};
class Circle: public Shape{
public:
Circle(double r): radius(r), PI(3.1415926){}
double Area(){return PI * radius * radius;}
private:
double radius;
const double PI;
};
class Rectangle: public Shape{
public:
Rectangle(double w, double h): width(w), height(h){}
double Area(){return width * height;}
private:
double width;
double height;
};
```
设计主函数:要求定义一个4元素Shape类指针数组,数组元素初始化为NULL,动态创建2个Circle对象和2个Rectangle对象,用上面的指针数组操作4个对象,设计循环求算它们的面积并显示。 主函数圆半径和矩形长宽设置为: Circle a(1),b(2); Rectangle c(1,2),d(3,4);
```
#include <iostream>
using namespace std;
int main(){
Shape* shapes[4] = {NULL, NULL, NULL, NULL};
shapes[0] = new Circle(1);
shapes[1] = new Circle(2);
shapes[2] = new Rectangle(1, 2);
shapes[3] = new Rectangle(3, 4);
for(int i = 0; i < 4; i++){
cout << "Area of shape " << i+1 << " is: " << shapes[i]->Area() << endl;
delete shapes[i];
}
return 0;
}
```
输出结果为:
```
Area of shape 1 is: 3.14159
Area of shape 2 is: 12.5664
Area of shape 3 is: 2
Area of shape 4 is: 12
```
以上是我对您提出问题的回答,希望能够帮助到您。如果您再有其他问题需要问,欢迎随时咨询我!
阅读全文