写出c++代码:定义一个抽象的几何图形类Shape,它有一个虚函数成员getArea(),返回图形的面积(默认返回0)。 由Shape类派生出一下几类:矩形类Rectangle,圆形类Circle,需要重新实现getArea()函数,使之返回正确的计算结果。 输入 输入1个整数,代表几何图形的类型。如果为1,则输入两个双精度浮点数分别为矩形的长和宽;如果为2,则输入一个双精度浮点数为圆形的半径。例如: 1 5.2 6.8 输出 输出该几何图形的面积,结果保留两位小数。例如: 35.36,其中main.cpp为#include <iostream> #include "shape.h" using namespace std; int main() { int shapeType; cin >> shapeType; if (shapeType == 1) { double length, width; cin >> length >> width; Rectangle rect(length, width); printf("%.2f\n", rect.getArea()); } else if (shapeType == 2) { double radius; cin >> radius; Circle cir(radius); printf("%.2f\n", cir.getArea()); } return 0; }
时间: 2024-01-28 14:03:03 浏览: 104
下面是一个可能的实现:
shape.h
```c++
#ifndef SHAPE_H
#define SHAPE_H
class Shape {
public:
virtual double getArea() const;
};
class Rectangle : public Shape {
public:
Rectangle(double length, double width);
virtual double getArea() const;
private:
double m_length;
double m_width;
};
class Circle : public Shape {
public:
Circle(double radius);
virtual double getArea() const;
private:
double m_radius;
};
#endif // SHAPE_H
```
shape.cpp
```c++
#include "shape.h"
#include <cmath>
double Shape::getArea() const {
return 0.0;
}
Rectangle::Rectangle(double length, double width) : m_length(length), m_width(width) {}
double Rectangle::getArea() const {
return m_length * m_width;
}
Circle::Circle(double radius) : m_radius(radius) {}
double Circle::getArea() const {
return M_PI * m_radius * m_radius;
}
```
main.cpp
```c++
#include <iostream>
#include "shape.h"
#include <cstdio>
using namespace std;
int main() {
int shapeType;
cin >> shapeType;
if (shapeType == 1) {
double length, width;
cin >> length >> width;
Rectangle rect(length, width);
printf("%.2f\n", rect.getArea());
} else if (shapeType == 2) {
double radius;
cin >> radius;
Circle cir(radius);
printf("%.2f\n", cir.getArea());
}
return 0;
}
```
在这个实现中,我们定义了一个抽象的几何图形类Shape,它有一个虚函数成员getArea(),返回图形的面积(默认返回0)。然后我们派生出了矩形类Rectangle和圆形类Circle,它们分别实现了getArea()函数,计算并返回正确的计算结果。
在main函数中,我们首先读取输入的几何图形类型,然后根据类型创建相应的对象,并调用getArea()函数计算面积。最后,我们使用printf函数输出结果,保留两位小数。
阅读全文