2.编写IShape抽象类,包含一个公有的纯虚函数girth()。 a>从该抽象类派生出 Rectangle (长方形)、circle(圆)类。 b>通过实现 girth() 纯虚函数,分别计算Rectangle与circle的周长。用c++
时间: 2024-09-26 11:06:24 浏览: 36
在C++中,为了创建一个支持多态性的场景,你可以首先定义一个名为`IShape`的抽象基类(Abstract Class),它包含一个公共的纯虚函数`girth()`。这个函数代表形状的基本属性,但具体的计算方式由每个特定的形状子类负责实现。
```cpp
// 定义抽象类 IShape
class IShape {
public:
// 纯虚函数,用于计算周长
virtual double girth() const = 0;
};
// 从抽象类派生出Rectangle类
class Rectangle : public IShape {
private:
double length;
double width;
public:
Rectangle(double l, double w) : length(l), width(w) {}
double girth() const override { return 2 * (length + width); }
};
// 另一个派生类Circle
class Circle : public IShape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double girth() const override { return 2 * M_PI * radius; } // 使用π作为近似值
};
```
在这个例子中,`Rectangle`和`Circle`都实现了`IShape`的`girth()`函数,提供了各自的周长计算方法。当你有一个`IShape`类型的指针或引用时,可以安全地调用`girth()`,因为编译器会自动调用最合适的子类版本,这就是多态的体现。
阅读全文