博客
关于我
C++学习日记2——多态篇的纯虚函数和抽象类
阅读量:532 次
发布时间:2019-03-09

本文共 950 字,大约阅读时间需要 3 分钟。

C++ökning Points: Abstract Classes and Pure Virtual Functions

在面向对象编程中,抽象类和纯虚函数是非常重要的概念。它们帮助我们构建灵活且可扩展的对象模型。以下将详细阐述这些概念。

知识点1: 纯虚函数的定义与制作

纯虚函数是函数申明,没有定义的函数。它们通常以“=0”号结尾,例如:

virtual void func() = 0; // 纯虚函数

纯虚函数具有以下特点:

  • 无定义:没有具体的函数实现。
  • 必须在子类中实现:使用者必须在派生类中提供实现,不能给出实例化对象。

知识点2: 抽象类的概念与性质

抽象类是指含有纯虚函数的类。其核心特征包括:

  • 抽象性:抽象类不能产生实例。
  • 扩展性:子类可以选择是否实现抽象类的成员。
  • 多重继承:支持继承多个接口类和非接口类。

简单来说,不能用new操作符创建抽象类的实例。然而,子类可能通过实现抽象类的纯虚函数而变得可实例化。

知识点3: 接口类的定义与应用

接口类是一个特化的抽象类,其仅包含纯虚函数。其主要作用是:

  • 规范子类行为:确保所有继承自该接口的子类都必须实现特定的方法。
  • 提现接口:通过接口指针,能够调用派生类的纯虚函数。

然而,要注意以下几点:

  • 接口类本身不可实例化。
  • 一个子类可以同时继承多个接口和非接口类。

知识点4: 综合应用与案例

如果你有一个抽象类Shape,其中含有纯虚函数move(),那么你可以创建如下的继承结构:

class Shape {public:    virtual void move() = 0; // 纯虚函数};class Rectangle : public Shape {public:    void move() override { // 实现了纯虚函数        // 移动的逻辑       setUpPosition();        move();        tearDownPosition();    }private:    // 附加功能的实现};

在这个例子中,Shape是一个抽象接口,而Rectangle是其具体的实现。通过这种方式,我们可以将行为分离,并基于接口指针进行操作,从而实现真正的松耦合设计。

转载地址:http://djzsz.baihongyu.com/

你可能感兴趣的文章
Qt之QImage无法获取图片尺寸(宽和高)
查看>>
美人秀色空绝世,我用PS-GAN试伊妆
查看>>
MYSQL 数据查询语言 多表连接查询
查看>>
机器学习研究者的养成指南,吴恩达建议这么读论文
查看>>
媒智科技--深度学习算法&Python后台开发--热招中~
查看>>
Mongodb默认日志的清理!
查看>>
MySQL Workbench用csv格式导出数据乱码
查看>>
YolactEdge:首个开源边缘设备上的实时实例分割(Jetson AGX Xavier: 30 FPS)
查看>>
源码编译安装MySQL5.6.12详细过程
查看>>
Nginx安装学习使用详细记录
查看>>
推荐几篇近期必看的视觉综述,含GAN、Transformer、人脸超分辨、遥感等
查看>>
Sqlite -- 数据迁移备份--从低版本3.6.2到高版本3.8.6
查看>>
刚刚!频域通道注意力网络FcaNet开源了!
查看>>
百度视觉技术部人脸检测方向招聘实习生~北京
查看>>
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED
查看>>
c++继承与派生习题答案
查看>>
linux下达梦数据库安装和使用步骤
查看>>
第123天学习打卡(Redis 测试性能 基础知识 Redis-Key String List)
查看>>
Linux系统部署Grafana
查看>>
Java-类加载过程
查看>>