c++中提取二维形状的共同特征,运用类的继承与派生有关内容定义一个基类Shape,在此基础上派生出Rectangle类和Cirle类,进而派生Square类和Cirle类,其中Square继承于Rectangle类,Cirle类继承于Circle类,实现Rectangle类、Circle类、Square类和Circle类都能进行周长与面积的计算。设计一个完整的代码,要求带有注释与解析
时间: 2024-03-26 09:35:03 浏览: 46
好的,我理解了你的问题。下面是代码实现:
```c++
#include <iostream>
using namespace std;
// 定义基类 Shape
class Shape {
public:
virtual double getArea() = 0; // 获取面积
virtual double getPerimeter() = 0; // 获取周长
};
// 定义矩形类 Rectangle,继承自 Shape
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 getPerimeter() { return 2 * (length + width); }
};
// 定义圆形类 Circle,继承自 Shape
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double getArea() { return 3.14 * radius * radius; }
double getPerimeter() { return 2 * 3.14 * radius; }
};
// 定义正方形类 Square,继承自 Rectangle
class Square : public Rectangle {
public:
Square(double s) : Rectangle(s, s) {}
};
int main() {
Rectangle r(3, 4);
cout << "Rectangle Area: " << r.getArea() << endl; // 输出矩形面积
cout << "Rectangle Perimeter: " << r.getPerimeter() << endl; // 输出矩形周长
Circle c(5);
cout << "Circle Area: " << c.getArea() << endl; // 输出圆形面积
cout << "Circle Perimeter: " << c.getPerimeter() << endl; // 输出圆形周长
Square s(6);
cout << "Square Area: " << s.getArea() << endl; // 输出正方形面积
cout << "Square Perimeter: " << s.getPerimeter() << endl; // 输出正方形周长
return 0;
}
```
这段代码定义了一个 Shape 基类,以及 Rectangle、Circle、Square 三个类分别继承自 Shape。其中,Square 继承自 Rectangle,实现了正方形的特殊功能。
在主函数中,我们创建了一个矩形、一个圆形和一个正方形,并分别调用了它们的 getArea() 和 getPerimeter() 方法,分别输出它们的面积和周长。
注释已经在代码中给出,希望能够帮助你理解这段代码。
阅读全文