定义GetPerim()函数计算对象的周长,通过重载来求矩形Rectangle和圆形Circle的周长,并编写测试main()函数。
时间: 2024-12-14 08:28:34 浏览: 17
在面向对象编程中,为了提供通用的计算周长的功能,并根据不同对象的特性实现特定的计算,我们可以定义一个名为`GetPerim()`的函数,这个函数会作为类的一个公共方法,用来计算各种形状的周长。在这个场景下,我们将对`Rectangle`和`Circle`两个类进行重载,分别实现各自的周长计算逻辑。
对于`Rectangle`类,其周长可以通过两倍的长度加两倍的宽度来计算;而对于`Circle`类,周长则为圆周率乘以直径。以下是代码示例:
```cpp
class Shape {
public:
virtual double GetPerim() const = 0; // 定义虚函数,声明但不实现
};
class Rectangle : public Shape {
private:
double length;
double width;
public:
Rectangle(double l, double w) : length(l), width(w) {}
double GetPerim() const override { return 2 * length + 2 * width; } // 重载函数,计算矩形周长
};
class Circle : public Shape {
private:
double diameter;
public:
Circle(double d) : diameter(d) {}
double GetPerim() const override { return M_PI * diameter; } // 重载函数,计算圆形周长
};
int main() {
Rectangle rect(5, 3);
double rect_perim = rect.GetPerim();
cout << "Rectangle perimeter: " << rect_perim << endl;
Circle circle(7);
double circle_perim = circle.GetPerim();
cout << "Circle perimeter: " << circle_perim << endl;
// 测试其他形状的周长,这里假设有一个Shape的指针数组或其他容器
// Shape* shapes[] = {new Rectangle(4, 6), new Circle(8)};
// for (Shape* shape : shapes) {
// cout << "Shape perimeter: " << shape->GetPerim() << endl;
// }
return 0;
}
```
阅读全文