.编写程序:定义一个抽象类Shape,其中包含两个纯虚函数GetArea()和GetPerimeter()。以Shape类作为基类创建Circle类和Rectangle类,这两个类对Shape类中的两个纯虚函数进行了重定义。Circle类中的GetArea()和GetPerimeter()函数分别用来计算圆的面积和周长;Rectangle类中的GetArea()和GetPerimeter()函数分别用来计算矩形的面积和周长。例如,执行主程序,可以在屏幕上输出:半径为3的圆的面积和周长、长和宽分别为5和8的矩形的面积和周长。
时间: 2024-03-22 22:38:43 浏览: 63
编写一个抽象类Shape
4星 · 用户满意度95%
以下是C++的实现代码:
```cpp
#include <iostream>
using namespace std;
// 抽象类 Shape
class Shape {
public:
// 纯虚函数,需要在派生类中重定义
virtual double GetArea() = 0;
virtual double GetPerimeter() = 0;
};
// Circle类派生自Shape类
class Circle : public Shape {
public:
// 构造函数
Circle(double r) : radius(r) {}
// 重定义 GetArea() 和 GetPerimeter() 函数
double GetArea() {
return 3.14 * radius * radius;
}
double GetPerimeter() {
return 2 * 3.14 * radius;
}
private:
double radius;
};
// Rectangle类派生自Shape类
class Rectangle : public Shape {
public:
// 构造函数
Rectangle(double l, double w) : length(l), width(w) {}
// 重定义 GetArea() 和 GetPerimeter() 函数
double GetArea() {
return length * width;
}
double GetPerimeter() {
return 2 * (length + width);
}
private:
double length;
double width;
};
// 主函数
int main() {
Circle c(3);
Rectangle r(5, 8);
cout << "圆的面积:" << c.GetArea() << endl;
cout << "圆的周长:" << c.GetPerimeter() << endl;
cout << "矩形的面积:" << r.GetArea() << endl;
cout << "矩形的周长:" << r.GetPerimeter() << endl;
return 0;
}
```
输出结果:
```
圆的面积:28.26
圆的周长:18.84
矩形的面积:40
矩形的周长:26
```
阅读全文