抽象基类ABC

abstract base class(ABC)

就是基类是抽象类,那么什么样的类才是抽象类,是要有纯虚函数的类

纯虚函数的声明:virtual void Area() =0;,该函数Area就是一个纯虚函数

一。为什么要用纯虚函数

比如说我们想要定义圆和椭圆,他们包括圆,椭圆的中心坐标,椭圆的长短轴,两者的面积,移动方法等,就是说他俩有一些共性,但是像面积他俩都要求,但是方法又不一样,我们可以说圆是椭圆的特殊,但是计算方式却是不一样,所以我们可以抽象出来一个抽象基类,将他俩相同的放进去,包括求面积的函数声明,然后分别派生出来椭圆和圆

那么就说为什么在基类里面给他对面积声明吗,我们不可以独自在自己的类中声明定义吗,当然是可以的,

有一个原因我想是这样的,因为一个类一旦有一个纯虚函数之后,它一般不在该类对他进行定义了,但也不是不可以,就是一般不定义了,而且规定抽象类不对有对象了,就是说他只能当作基类被继承,不能创建它的对象,而且只要继承了该抽象类,那么派生类必须要实现当中的纯虚函数,就是你必须实现Area方法,可能只样就比较统一,规范吧,既然是图像,就要有面积的意思。而且这样可以使用基类的指针数组统一管理椭圆和圆了,是不是!

有一种感觉是ABC很规范,统一,但又不失给你自由的空间,抽象出来的方法自己定义

ABC要求具体派生类覆盖其纯虚函数——迫使派生类遵循ABC设置的接口规则,这种模式在基于组件的编程模式中很常见。在这种情况下,使用ABC是得组件设计人员能够制定“接口约定”,确保了从ABC派生的所有组件都至少支持ABC指定的功能。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值