定义一个形状基类Shape,成员函数:面积计算方法、输出形状名方法 (2)定义一个派生类圆Circle,继承自Shape类,并对上述成员函数进行具体实现 (3)生类初始化,并输出相应信息
时间: 2024-10-16 14:06:05 浏览: 45
c++ 形状类Shape(派生出圆类Circle和矩形类Rectangle)
定义一个基础形状类 `Shape`,包含两个通用功能:计算面积和输出形状名称。这有助于我们在设计更复杂的图形时保持代码结构清晰:
```cpp
class Shape {
public:
virtual double calculateArea() const = 0; // 面积计算纯虚函数
virtual void outputShapeName() const; // 输出形状名称的方法
protected:
string shapeName;
};
```
接着,我们创建一个派生类 `Circle`,从 `Shape` 类继承,实现了这两个方法,专门针对圆形的特性:
```cpp
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {
shapeName = "Circle"; // 初始化形状名称
}
// 实现面积计算方法
double calculateArea() const override {
return M_PI * radius * radius;
}
// 实现输出形状名称的方法
void outputShapeName() const override {
cout << "Shape Name: " << shapeName << endl;
}
};
```
现在我们可以实例化一个 `Circle` 对象并调用它的方法:
```cpp
int main() {
Circle circle(5.0); // 创建一个半径为5的圆
// 计算面积并输出
cout << "Area of the Circle: " << circle.calculateArea() << endl;
// 输出形状名称
circle.outputShapeName();
return 0;
}
```
在这个例子中,`Circle` 类继承自 `Shape`,覆盖了其中的纯虚函数,使得当我们创建 `Circle` 的对象时,可以直接调用其特有的计算面积和输出形状名称的方法。这就是多态的应用,虽然调用的是基类的函数,但是由于对象的实际类型是 `Circle`,所以执行的是 `Circle` 类内的实现。
阅读全文