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; 

}

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值