4.纯虚函数与抽象类

点击打开在线编译器,边学边练

纯虚函数与抽象类

 

纯虚函数,就是没有函数体的虚函数。什么叫没有函数体? 就是这样定义的函数:


virtual 返回值  函数名(形参)=0;


可以看到,前面virtual与虚函数定义一样,后面加了一个=0。表示没有函数体,这就是一个纯虚函数。包含纯虚函数的类就是抽象类,一个抽象类至少有一个纯虚函数。

 


抽象类的存在是为了提供一个高度抽象、对外统一的接口,然后通过多态的特性使用各自的不同方法,是C++面向对象设计以及软件工程的核心思想之一。

 

抽象类的特点总结如下:

1. 抽象类无法实例出一个对象来,只能作为基类让派生类完善其中的纯虚函数,然后再实例化使用。

2. 抽象类的派生来依然可以不完善基类中的纯虚函数,继续作为抽象类被派生。直到给出所有纯虚函数的定义,则成为一个具体类,才可以实例化对象。

3. 抽象类因为抽象、无法具化,所以不能作为参数类型、返回值、强转类型

4. 接着第三条,但抽象类可以定义一个指针、引用类型,指向其派生类,来实现多态特性。