设计一个多文件工程程序,其功能是计算圆周和矩形的面积和周长。
shape.h内容如下
#include <iostream>
#include <cmath>
// 定义 Shape 类
class Shape {
public:
// 计算面积的虚函数
virtual double area() const = 0;
// 计算周长的虚函数
virtual double perimeter() const = 0;
};
// 定义 Circle 类
class Circle: public Shape {
public:
// Circle 类的构造函数,用于初始化圆的半径
Circle(double radius): radius_(radius) {}
// 计算圆的面积
double area() const override {
return M_PI * radius_ * radius_;
}
// 计算圆的周长
double perimeter() const override {
return 2 * M_PI * radius_;
}
private:
// 圆的半径
double radius_;
};
// 定义 Rectangle 类
class Rectangle: public Shape {
public:
// Rectangle 类的构造函数,用于初始化矩形的长和宽
Rectangle(double length, double width): length_(length), width_(width) {}
// 计算矩形的面积
double area() const override {
return length_ * width_;
}
// 计算矩形的周长
double perimeter() const override {
return 2 * (length_ + width_);
}
private:
// 矩形的长和宽
double length_, width_;
};
shape.cpp文件内容如下:
#include "shape.h"
int main() {
// 创建一个圆形,半径为 5
Circle circle(5);
// 计算圆的面积和周长
std::cout << "Circle area: " << circle.area() << std::endl;
std::cout << "Circle perimeter: " << circle.perimeter() << std::endl;
// 创建一个长为 10,宽为 5 的矩形
Rectangle rectangle(10, 5);
// 计算矩形的面积和周长
std::cout << "Rectangle area: " << rectangle.area() << std::endl;
std::cout << "Rectangle perimeter: " << rectangle.perimeter() << std::endl;
return 0;
}
如果你运行这段代码,它应该会输出:
Circle area: 78.5398
Circle perimeter: 31.4159
Rectangle area: 50
Rectangle perimeter: 30