#include <iostream>
using namespace std;
// 定义一个抽象类 Shape
class Shape {
public:
// 纯虚函数,使得 Shape 成为抽象类
virtual void draw() = 0;
// 虚析构函数,确保派生类的析构函数被正确调用
virtual ~Shape() {}
};
// 派生类 Circle,实现抽象类 Shape 的纯虚函数
class Circle : public Shape {
public:
void draw() override {
cout << "Drawing Circle" << endl;
}
};
// 派生类 Rectangle,实现抽象类 Shape 的纯虚函数
class Rectangle : public Shape {
public:
void draw() override {
cout << "Drawing Rectangle" << endl;
}
};
int main() {
// 不能创建抽象类的对象
// Shape shape; // 错误:无法实例化抽象类
// 创建派生类对象,并通过基类指针调用
Shape* shape1 = new Circle();
Shape* shape2 = new Rectangle();
shape1->draw(); // 输出: Drawing Circle
shape2->draw(); // 输出: Drawing Rectangle
// 释放内存
delete shape1;
delete shape2;
return 0;
}
Shape 是一个抽象类,因为它包含了一个纯虚函数 draw()。纯虚函数没有具体的实现,只提供接口定义。Circle 和 Rectangle 继承自 Shape,并实现了 draw() 函数。Shape 类中定义了虚析构函数 virtual ~Shape() {},确保派生类的析构函数在删除对象时被正确调用。Shape* 可以调用派生类的 draw() 方法,体现了多态性。Shape 类的对象,因为它是抽象类。上一篇:c++ transform
下一篇:c++反转字符串
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站