抽象基类和纯虚函数

本文详细解释了抽象基类的概念及其在C++编程中的应用,包括如何通过纯虚成员函数来定义抽象基类,以及派生类如何继承并实现这些纯虚函数以避免成为抽象基类。

抽象基类

抽象基类之所以是抽象的,是因为不能实例化抽象基类的对象,抽象基类可以用来指明某些必须被派生类覆盖的虚函数,如果这些派生类想要拥有对象的话。只有符合下面条件的类才可以称为抽象基类:

类必须拥有一个纯虚成员函数

在纯虚成员函数声明的结尾加上=0就可以将这个函数定义为纯虚成员函数

class ABC{  //Abstract Base Class
public:
	virtual void open() = 0;
};

       上面的代码段展示了声明一个纯虚成员函数的方法,这个类的声明语法声明了一个拥有纯虚成员函数open的抽象基类ABC,因为open为纯虚成员函数,所以类ABC为抽象基类。

       虽然不能创建一个抽象基类的对象,但抽象基类可以拥有派生类,从抽象基类派生来的类必须覆盖基类的所有纯虚成员函数,否则派生类也成为抽象基类,因而也不能用来创建对象。

       一个纯虚成员函数就可以使一个类成为抽象基类,一个抽象基类可以有其他不是纯虚成员函数或甚至不是虚函数的成员函数,还可以有数据成员。抽象基类的成员可以是private、protected或public。

       只有虚函数才可以成为纯虚成员函数,非虚函数或顶层函数都不能声明为纯虚成员函数。

       抽象基类的作用很大,通过这种机制,可以用来指明某些虚函数必须被派生类覆盖,否则这些派生类就不能拥有对象。从这种意义上来看,抽象基类实际上定义了一个公共接口,这个接口被所有从抽象基类派生的类共享。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值