C++为什么设计抽象类?

博客围绕C++设计抽象类展开,虽未给出具体内容,但核心聚焦于探讨C++设计抽象类的缘由,这在C++编程及相关开发中有重要意义,能帮助开发者更好理解和运用该语言特性。

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

网上也有许多介绍,但我总觉得不能一针见血,根据自己工作实际中用到的,才知道有些时候真的是需要抽象类


先说一种场景:
A设计了一项功能他把此功能封装成一个类,以类的方式提供,他要把这项功能提供给B、C,我们理所当然的想到他会把源码或者编译成的
库+h文件给BC。
现在在修改一下这个场景:如果 ABC做的是同一个项目,为了保证代码不重,方便维护。这样就不能再使用上面的方法了,只能将头文件提供
给BC,而且这个头文件要做成一个抽象类,这样BC才能编译通过,或者还有一种方法,将.h+导入库提供给BC。但哪种方法更好一目了解。

为什么只用提供一个抽象类(.h文件)就可以了呢?
抽象类的最大特点就是有纯虚函数,纯虚函数的意义就是你可以把它当做一个已经有实现了的函数,而不只是一个函数声明。这样,BC在自
己的模块中就可以使用这个纯虚类来进行编译而不会报错(对!只需要包含这个抽象类的.h文件,不需要什么cpp文件),但如果是一个普通
类,如果我们只包含了它的声明,那么在编译的时候肯定会报错,因为编译器会认为你忘记实现。而抽象类由于不能自己实例化,只能做指引
或者引用,所以编译器会认为你在使用的时候一定是引用了外部已经实现了的子类,所以不会报错。

也就是说如果没有抽象类,我们无法将别人提供的接口拿来编译,只能将别人的源码或者库都拿来。
这也就是大家所说的接口与实现分离。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值