5.定义一个基类Shape,在此基础上派生出Rectangle和Circle,二者都有getArea()函数计算对象的面积。使用Rectangle创建一个派生类Square。以C++形式
时间: 2024-12-23 12:26:24 浏览: 13
在C++中,我们可以首先定义一个名为`Shape`的基类,然后从它派生出`Rectangle`和`Circle`两个类,它们都继承`Shape`并重写`getArea()`函数。接着,我们再创建一个特殊的矩形类`Square`,它是`Rectangle`的一个特例,其所有边长相等。
```cpp
// 定义基类 Shape
class Shape {
public:
virtual double getArea() const = 0; // 虚函数声明,用于派生类覆盖
protected:
// 其他可能共有的属性和构造函数...
};
// 派生类 Rectangle
class Rectangle : public Shape {
private:
double width;
double height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double getArea() const override { return width * height; }
};
// 特殊的矩形类 Square,实际上是Rectangle的子类
class Square : public Rectangle {
public:
Square(double side) : Rectangle(side, side) {} // 利用Rectangle的构造函数初始化
// 因为Square是Rectangle的一个特殊情况,所以getArea()直接等于side*side
double getArea() const override { return side * side; } // 使用单独的变量side代替width和height
};
int main() {
Square mySquare(5); // 创建一个边长为5的正方形
double area = mySquare.getArea(); // 获取正方形的面积
// ...其他操作...
return 0;
}
```
阅读全文