#include <iostream>
// 基类
class Shape {
public:
// 虚函数
virtual void draw() {
std::cout << "Drawing a shape." << std::endl;
}
virtual ~Shape() {} // 虚析构函数
};
// 派生类:Circle
class Circle : public Shape {
public:
void draw() override { // 重写虚函数
std::cout << "Drawing a circle." << std::endl;
}
};
// 派生类:Square
class Square : public Shape {
public:
void draw() override { // 重写虚函数
std::cout << "Drawing a square." << std::endl;
}
};
int main() {
Shape* shape1 = new Circle(); // 使用基类指针指向派生类对象
Shape* shape2 = new Square();
shape1->draw(); // 输出:Drawing a circle.
shape2->draw(); // 输出:Drawing a square.
// 释放内存
delete shape1;
delete shape2;
return 0;
}