当前位置:首页 C++ > 正文

c++定义一个shape抽象类,派生出Rectangle类和Circle类,计算各派生类对象的面积Area()

作者:野牛程序员:2024-10-29 17:06:16 C++阅读 2621
c++定义一个shape抽象类,派生出Rectangle类和Circle类,计算各派生类对象的面积Area()

c++定义一个shape抽象类,派生出Rectangle类和Circle类,计算各派生类对象的面积Area()

以下是一个 C++ 程序,定义了一个抽象类 Shape,并派生出 RectangleCircle 类,以计算各自的面积:

#include <iostream>
#include <cmath>

// 抽象类 Shape
class Shape {
public:
    virtual double Area() const = 0; // 纯虚函数
};

// Rectangle 类
class Rectangle : public Shape {
private:
    double width;
    double height;

public:
    Rectangle(double w, double h) : width(w), height(h) {}

    double Area() const override {
        return width * height;
    }
};

// Circle 类
class Circle : public Shape {
private:
    double radius;

public:
    Circle(double r) : radius(r) {}

    double Area() const override {
        return M_PI * radius * radius; // 使用 M_PI 计算圆的面积
    }
};

int main() {
    Shape* shapes[2];
    shapes[0] = new Rectangle(5.0, 3.0); // 创建 Rectangle 对象
    shapes[1] = new Circle(2.0);         // 创建 Circle 对象

    for (int i = 0; i < 2; ++i) {
        std::cout << "Area of shape " << i + 1 << ": " << shapes[i]->Area() << std::endl;
        delete shapes[i]; // 释放内存
    }

    return 0;
}

程序说明

  1. Shape 类:

    • 定义了一个抽象类,包含一个纯虚函数 Area(),用于计算面积。

  2. Rectangle 类:

    • 继承自 Shape,包含宽度和高度。

    • 重写 Area() 方法,计算矩形面积。

  3. Circle 类:

    • 继承自 Shape,包含半径。

    • 重写 Area() 方法,计算圆的面积,使用 M_PI 常量来表示 π。

  4. 主函数:

    • 创建了一个 Shape 指针数组,用于存储不同形状的对象。

    • 通过循环计算并打印每个形状的面积。

    • 最后释放动态分配的内存以防止内存泄漏。

这个程序展示了如何使用抽象类和多态来实现不同形状的面积计算。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • c++
  • 最新推荐

    热门点击