已知Circle类为抽象类,包含一个 double 类型的数据成员 r (圆的半径)与一个纯虚函数 show()。 Area类与 Perimeter类均从Circle类public派生而来,请将程序补充完整用来计算圆的面积与周长,其中π取值为 3.14。 示例中只有第1行为输入 例1: 1.1 2.2 area=3.7994 Perimeter=13.816 例2: 1 2 area=3.14 Perimeter=12.56 请注意,main()函数或给定部分必须按如下所示编写: int main() { double r1,r2; cin>>r1>>r2; Circle *p; Area a(r1); p=&a; p->show(); Perimeter per(r2); p=&per; p->show(); return 0; }
时间: 2024-03-24 09:38:53 浏览: 121
下面是实现 Circle、Area 和 Perimeter 类的代码:
```c++
#include <iostream>
using namespace std;
class Circle {
protected:
double r;
public:
Circle(double r) : r(r) {}
virtual void show() = 0; // 纯虚函数
};
class Area : public Circle {
public:
Area(double r) : Circle(r) {}
void show() {
double area = 3.14 * r * r;
cout << "area=" << area << " ";
}
};
class Perimeter : public Circle {
public:
Perimeter(double r) : Circle(r) {}
void show() {
double perimeter = 2 * 3.14 * r;
cout << "Perimeter=" << perimeter << endl;
}
};
int main() {
double r1, r2;
cin >> r1 >> r2;
Circle* p;
Area a(r1);
p = &a;
p->show();
Perimeter per(r2);
p = &per;
p->show();
return 0;
}
```
由于 Circle 类是抽象类,我们无法直接创建其对象,只能通过派生类来实现多态性。Area 和 Perimeter 类都从 Circle 类 public 派生而来,并实现了纯虚函数 `show()`。在 `main` 函数中,我们先读入两个圆的半径,然后通过指针 `p` 指向 Area 和 Perimeter 类的对象,并分别调用 `show()` 函数来计算圆的面积和周长。注意要在输出末尾加上换行符。
阅读全文