aiaiask.com©

开花即结果 提问即答案

设计Shape类及其派生类Rectangle和Circle,实现多态计算面积与周长
原始问题:

设计Shape类及其派生类Rectangle和Circle,实现多态计算面积与周长

首先,我们需要定义一个Shape类,其中包含两个纯虚函数:计算面积和周长。然后,我们需要派生出两个派生类:Rectangle和Circle。在派生类中,我们需要实现这两个纯虚函数。最后,在主函数中测试这几个类,并实现多态。

代码如下:

#include <iostream>
#include <cmath>

const double PI = 3.14159265358979323846;

class Shape {
public:
    virtual double area() const = 0;
    virtual double perimeter() const = 0;
};

class Rectangle : public Shape {
public:
    Rectangle(double width, double height) : width_(width), height_(height) {}

    double area() const override {
        return width_ * height_;
    }

    double perimeter() const override {
        return 2 * (width_ + height_);
    }

private:
    double width_;
    double height_;
};

class Circle : public Shape {
public:
    Circle(double radius) : radius_(radius) {}

    double area() const override {
        return PI * radius_ * radius_;
    }

    double perimeter() const override {
        return 2 * PI * radius_;
    }

private:
    double radius_;
};

int main() {
    Rectangle rect(3, 4);
    Circle circle(5);

    std::cout << "矩形的面积: " << rect.area() << std::endl;
    std::cout << "矩形的周长: " << rect.perimeter() << std::endl;
    std::cout << "圆的面积: " << circle.area() << std::endl;
    std::cout << "圆的周长: " << circle.perimeter() << std::endl;

    Rectangle rect2(2, 6);
    Circle circle2(3);

    std::cout << "另一个矩形的面积: " << rect2.area() << std::endl;
    std::cout << "另一个矩形的周长: " << rect2.perimeter() << std::endl;
    std::cout << "另一个圆的面积: " << circle2.area() << std::endl;
    std::cout << "另一个圆的周长: " << circle2.perimeter() << std::endl;

    return 0;
}

在这个程序中,我们定义了一个Shape类,其中包含两个纯虚函数:area()和perimeter()。然后,我们派生出了两个派生类:Rectangle和Circle。在派生类中,我们实现了这两个纯虚函数。在主函数中,我们测试了这几个类,并实现了多态。

设计Shape类及其派生类Rectangle和Circle,实现多态计算面积与周长
https://www.aiaiask.com/ask/48846.html
AI / 模型Siliconflow
时间 / DATEOctober 7, 2023, 8:09 PM
语言zh-CN
IP / 区域四川 成都