抽象基类(Abstract Base Class)是一个在 C++ 中用于定义接口的类,它至少包含一个纯虚函数。抽象基类定义了一组方法或操作,但没有提供具体的实现,而是留给派生类去实现。抽象基类常常用于面向对象编程中的多态性和接口规范。
特点:
-
至少一个纯虚函数: 抽象基类至少包含一个纯虚函数,它的声明以
= 0
结尾,没有实现体。 -
没有具体实现: 抽象基类没有提供方法的具体实现,它的目的是定义一组接口规范。
-
不能实例化: 由于抽象基类包含纯虚函数,它不能被直接实例化。只能用作其他类的基类,派生类必须实现所有纯虚函数才能实例化。
#include <iostream>
class AbstractBase {
public:
virtual void abstractMethod() const = 0; // 纯虚函数,定义接口
virtual ~AbstractBase() {} // 虚析构函数
};
class ConcreteDerived : public AbstractBase {
public:
void abstractMethod() const override {
// 实现抽象方法
std::cout << "ConcreteDerived::abstractMethod()" << std::endl;
}
};
int main() {
// AbstractBase obj; // 无法实例化抽象基类
AbstractBase* ptr = new ConcreteDerived();
ptr->abstractMethod(); // 调用派生类实现的抽象方法
delete ptr;
return 0;
}