定义 GetPerim()函数计算对象的周长,通过重载来求矩形 Rectangle 和圆形 Circle 的周长,并编写测试 main()函数。
时间: 2024-11-05 22:27:12 浏览: 19
C++ 实验多态性实验报告.pdf
在面向对象编程中,`GetPerim()`函数是一个通用的方法,用于计算形状的周长。为了实现多态,我们可以创建两个类,Rectangle(矩形)和Circle(圆),它们都包含一个共同的父类Shape或者接口IShape,这个父类或接口声明了计算周长的方法。
首先,让我们定义基础的Shape类以及GetPerim()方法:
```cpp
class IShape {
public:
virtual double GetPerim() const = 0; // 纯虚函数,所有子类都需要实现此方法
};
class Shape {
protected:
double _perimeter;
public:
// 构造函数等...
virtual ~Shape() {}
double GetPerim() override { return _perimeter; } // 父类实现基本版本
};
```
然后,我们为Rectangle和Circle这两个具体的形状类重载GetPerim()方法:
```cpp
class Rectangle : public Shape {
private:
double width, height;
public:
Rectangle(double w, double h) : width(w), height(h) {}
double GetPerim() const override {
return 2 * (width + height);
}
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double GetPerim() const override {
return 2 * M_PI * radius;
}
};
```
最后,在main函数中,我们可以创建不同类型的对象并调用GetPerim(),由于多态性,系统会自动选择正确的实现:
```cpp
int main() {
Rectangle rect(5, 7);
Circle circle(4.5);
cout << "Rectangle perimeter: " << rect.GetPerim() << endl;
cout << "Circle perimeter: " << circle.GetPerim() << endl;
return 0;
}
```
阅读全文