C++知识 抽象基类

抽象基类通常包含至少一个纯虚函数,即一个没有具体实现的虚函数,通过在基类中声明纯虚函数,它强制派生类提供这个函数的具体实现。

通过在类的声明中使用 virtual 关键字和 = 0 初始化来创建纯虚函数,这样的类就成为抽象基类。以下是一个示例:

class Shape {
public:
    // 纯虚函数,使得Shape成为抽象基类
    virtual void draw() const = 0;

    // 其他虚函数
    virtual double area() const {
        return 0.0;
    }

    // 普通成员函数
    void displayInfo() const {
        // ...
    }
};

让我们对 virtual void draw() const = 0; 这行代码的每个部分进行简单的介绍:

  1. virtual 关键字:

    • virtual 是 C++ 中用于声明虚函数的关键字。
  2. void

    • void 是函数的返回类型,表示该函数不返回任何值。
  3. draw()

    • draw 是函数的名称,这里是虚函数的名称。
  4. const 关键字:

    • const 是常量修饰符,表示该函数不会修改调用对象的成员变量。
    • 这种声明方式可以使得常量对象也能够调用这个函数。
  5. = 0

    • = 0 是在声明中虚函数的方式,表示这是一个纯虚函数。
    • 纯虚函数是没有实际实现的虚函数,要求任何派生类必须提供自己的实现。
    • 类中有纯虚函数的类称为抽象基类,不能被实例化,只能被用作其他类的基类。

所以,virtual void draw() const = 0; 表示这是一个虚函数 draw,它是一个纯虚函数,没有具体的实现,而且它不会修改调用对象的状态。

在这个例子中,Shape 就是一个抽象基类,它包含一个纯虚函数 draw()。任何继承自 Shape 的派生类都必须提供 draw() 的具体实现。

int main() { 


    // 错误,不能实例化抽象类 
    // Shape shape; 

     
    // Shape的纯虚函数draw()必须在派生类中实现
 
    return 0; 

}

抽象基类的目的是为了提供一个通用的接口,使得不同的派生类能够共享相似的行为,并通过多态性实现对这些不同派生类的统一处理。

你可能感兴趣的:(C++,c++,开发语言)