C++抽象类、纯虚函数和接口

在C++中,抽象类是一种特殊的类,旨在作为其他类的基类使用。它定义了一组接口,派生类应该实现这些接口。

抽象类的主要特征

至少包含一个纯虚函数,不能被直接实例化,为派生类提供基础结构

纯虚函数(Pure Virtual Function)

纯虚函数是在基类中声明的虚函数,它没有具体的实现,只提供接口声明。纯虚函数的声明以= 0结束,例如:

virtual void myFunction() = 0;

派生类实现接口,包含纯虚函数的类不能被实例化,因为它不完整。只有当所有纯虚函数都在派生类中被重写后,该派生类才能被实例化

抽象类的作用

  1. 定义接口:抽象类提供了一个共同的接口,使得派生类可以有不同的实现。这便于实现多态和代码复用。****接口主要针对的是一些不同类别动作或者成员函数。比如人需要吃喝拉撒,狗也需要吃喝拉撒。吃喝拉撒就是接口,人和狗都可以继承。哈哈哈哈哈…
  2. 禁止实例化:由于抽象类含有至少一个纯虚函数,因此不能直接创建其对象。这样确保了抽象类的职责清晰,仅作为其他类的基础。子类必须全部继承父类的纯虚函数,继承部分依然是一个抽象类,不能实例化。
  3. 促进多态:通过抽象类的指针或引用,可以调用在派生类中重写的函数。这是运行时多态的基础。

示例

以下是一个抽象类的简单例子:

class Shape {
public:
    // 纯虚函数
    virtual double area() = 0;
    virtual double perimeter() = 0;
};

class Circle : public Shape {
private:
    double radius;
public:
    Circle(double r) : radius(r) {}
    // 重写纯虚函数
    double area() override {
        return 3.14 * radius * radius;
    }
    double perimeter() override {
        return 2 * 3.14 * radius;
    }
};

在这个例子中,Shape是一个抽象类,包含两个纯虚函数:areaperimeterCircle继承自Shape并且提供了这些纯虚函数的实现。因此,Circle可以被实例化,而Shape不能。

抽象类是面向对象编程的一个重要概念,特别是在设计和实现具有统一接口和多态行为的系统时。通过抽象类来设计软件可以增强代码的模块性和可复用性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值