C++(16)—— 抽象类

本文介绍了C++中的抽象类概念,包括为何含有纯虚函数的类不能实例化,其在设计模式中的作用,以及如何通过纯虚函数实现接口。重点讲解了抽象类的使用场景、规定和派生类的注意事项,帮助理解面向对象编程中的抽象原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

上一讲我们提到了纯虚函数,接下来由此展开抽象类的学习

概念

  • 含有纯虚函数的基类是不能用来定义对象的。
  • 纯虚函数没有实现部分,不能产生对象,所以含有纯虚函数的类是抽象类。
  • 抽象类是一种特殊的类,它是为了抽象和设计的目的而存在的,它处于继承层次结构的较上层。
  • 抽象类是不能定义对象的,在实际中为了强调一个类是抽象类,可将该类的构造函数说明为保护的访问控制权限。

作用

将有关的组织在一个继承层次中,由它来为它们提供一个公有的根,相关的子类是从这个根派生出来的。

注意 :子类如果不重写父类中的纯虚函数,那么这个子类也将演化成为一个抽象类.

抽象类刻画了一组子类的操作接口的通用语义,这些语义也回传给子类,一般而言、抽象类只描述这组子类共同的操作接口,而完整的实现留给子类。

注意:派生类必须重写所有的纯虚函数,缺少一个都不能实例化出对象

注意:在继承关系中,抽象类虽然不能实例化出对象,但是可以作为隐藏基对象存在于子类中,作为子类型的一个无名对象的结构。

抽象类的规定
  1. 抽象类只能作为其他类的基类,不能建立抽象类对象
  2. 抽象类不能用作参数类型,函数返回类型或者显式转换的类型
  3. 可以指定抽象类的指针或引用,该指针可以指向它的派生类,进而实现多态性。

代码示例:
在这里插入图片描述

接口

C++中实现接口的方式是:在基类中只给出纯虚函数的声明,然后在派生类中实现纯虚函数的具体定义的方式实现接口,不同派生类实现接口的方式也不尽相同,从而实现多态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值