西南科技大学C++实验作业2:继承与多态的实现代码
当然,我可以帮你了解如何实现继承与多态的基本概念。下面是一个简单的C++示例,展示了如何使用继承和多态性:
#include <iostream>
using namespace std;
// 基类:Shape
class Shape {
public:
// 虚函数:可以在派生类中重新定义
virtual void draw() const {
cout << "Drawing a shape." << endl;
}
// 虚析构函数
virtual ~Shape() {
cout << "Shape destroyed." << endl;
}
};
// 派生类:Circle
class Circle : public Shape {
public:
void draw() const override {
cout << "Drawing a circle." << endl;
}
~Circle() {
cout << "Circle destroyed." << endl;
}
};
// 派生类:Rectangle
class Rectangle : public Shape {
public:
void draw() const override {
cout << "Drawing a rectangle." << endl;
}
~Rectangle() {
cout << "Rectangle destroyed." << endl;
}
};
void demonstratePolymorphism(const Shape& shape) {
shape.draw(); // 多态性:调用适当的派生类方法
}
int main() {
Circle circle;
Rectangle rectangle;
demonstratePolymorphism(circle); // 输出:Drawing a circle.
demonstratePolymorphism(rectangle); // 输出:Drawing a rectangle.
return 0;
}
代码解释:
- 继承:
Circle
和Rectangle
类继承自Shape
类。 - 多态: 使用了
virtual
关键字来实现多态。在Shape
类中,draw
方法是虚函数,在派生类中重新实现了该函数。 - 多态性表现:
demonstratePolymorphism
函数中,尽管形参类型为Shape
的引用,但在运行时会调用具体对象类型的draw
方法。 - 虚析构函数: 基类
Shape
中定义了虚析构函数,以确保正确调用派生类析构函数,防止内存泄漏。
请根据实验要求进一步调整和丰富代码结构。确保代码符合学习内容和具体的作业要求。