
来过节了!1024!
希望今年可以在csdn上发出更多高质量文章!
努力!
记录下自己的学习记录!!!
冲!
纯虚函数和抽象类
举的一个例子就比如,雇员是基类,然后派生出不同岗位的雇员,为了只说明一个公共界面,来借此实现各自的版本。就是利用基类声明一个纯虚函数,但是没有确切的定义,目的是为了在真正实现的时候,能够看起来更加简洁明了而且这样派生类的同种功能的实现可以根据各自的属性拥有不同的特性,就大大便利了现实生活。
- 纯虚函数是一个在基类中说明的虚函数,在基类中没有定义, 要求任何派生类都定义自己的版本,凭此来实现多态性。
- 纯虚函数为各派生类提供一个公共接口。
纯虚函数说明形式:
virtual 类型 函数名(参数表)= 0 ;
一个具有纯虚函数的基类称为抽象类。 - 抽象类中由于纯虚函数的出现导致了其操作的不完整性,只有在派生类中进行实现后才可谓完整,由此,抽象类是不能声明象的,但是可以声明指针和引用,后面会提及的。只有当派生类实现了对从基类继承过来的纯虚函数的定义,这时派生类被称为具体类,可以声明对象;否则就仍然是抽象类,不能声明对象。
- 虚函数的存在仅仅是为了提供一个公共接口,从而统一调用方法,使实现起来更加方便。
不能作为返回类型和参数类型的原因基本都是和之前复制构造函数的原理相似,就是建立了一个匿名对象。
虚函数和多态性的应用
一个实例
同第一句的实例,可以感受到纯虚函数带来的程序设计的便利性。
异质链表
为了使上述例子当中的不同类的雇员统一组织在一个数据结构中,可以定义抽象类指针数组或链表。
由于这种表中具有不同类类型对象(它们都有共同的基类),所以称为异质链表。