原始问题:
设计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。在派生类中,我们实现了这两个纯虚函数。在主函数中,我们测试了这几个类,并实现了多态。
Prev:畅想在党带领下的2035以及2050