C++中的抽象类以及与虚基类的异同

1.抽象类
要了解抽象类首先需要什么是纯虚函数

1、纯虚函数
纯虚函数是一个在基类中声明的虚函数,它在该基类中没有定义具体的操作内容,要求各派生类根据实际需求定义自己的版本,纯虚函数的声明格式为
virtual 函数类型 函数名(参数表)=0;

即在一个虚函数的声明语句的分号前加上=0,即可将一个虚函数变成纯虚函数,其中,=0只能出现在类内部的虚函数声明语句处。

纯虚函数只用声明,而不用定义,其存在就是为了提供接口,含有纯虚函数的类是抽象基类.纯虚函数必须在子类中被重写。

抽象类只能作为派生类的基类,不能定义对象,其作用是规范整个类家族的统一对外接口。

2、抽象类的特点
1).含有纯虚函数的类被称为抽象类。抽象类只能作为派生类的基类,不能定义对象

2).在定义纯虚函数时,不能定义虚函数的实现部分

3).抽象类的唯一用途是为派生类提供基类,纯虚函数的作用是作为派生类中的成员函数的基础,并实现动态多态性。继承于抽象类的派生类如果不能实现基类中所有的纯虚函数,那么这个派生类也就成了抽象类。因为它继承了基类的抽象函数,只要含有纯虚函数的类就是抽象类。纯虚函数已经在抽象类中定义了这个方法的声明,其它类中只能按照这个接口去实现。

3、抽象类的语法
带纯虚函数的类称为抽象类

class 类名
{
    
    
virtual 类型 函数名(参数表)=0;
//其他成员
}

4、抽象类的作用
1).将有关的数据和行为组织在一个继承层次结构中,保证派生类具有要求的行为
2).对于暂时无法实现的函数,可以声明为纯虚函数,留给派生类去实现。

注:
1).抽象类只能作为基类使用
2).不能定义抽象类的对象

扫描二维码关注公众号,回复: 12595327 查看本文章

5、与虚基类的不同
简单来说就是虚基类是解决多继承造成的二义性问题
而抽象类是统一对外接口。
(我觉得会搞混大概率是把C++跟java的抽象类搞混淆了,C++抽象类不用在类名前加abstract)

猜你喜欢

转载自blog.csdn.net/qq_43530773/article/details/114191238