虚函数与纯虚函数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

接口继承与实现继承

1、继承的总是成员函数的接口。对于一个基类是正确的事情,对于它的派生类必须也是正确的。

2、声明纯虚函数的目的是使派生类仅继承函数接口,而函数的实现由派生类去完成。

3、声明虚函数的目的是使派生类既能继承函数的接口,又能继承函数的缺省实现。

4、声明实函数的目的是使派生类既能继承函数的接口,又使派生类继承函数的强制实现。

虚函数与函数重载:

虚函数可以在派生类中重新定义,实函数也可以在派生类中重新定义即重载,而两者的区别是:对于虚函数使用动态联编,只要基类指针和派生类指针都指向派生类对象,用基类指针和派生类指针访问虚函数时,都访问以派生类定义的虚函数代码。对于实函数重载使用静态联编,即使基类指针和派生类指针都指向派生类对象,用基类指针访问虚函数时,将调用基类定义的代码,而用派生类指针访问虚函数时,将调用派生类定义的代码。所以,为了提高程序的质量,很少使用实函数重载,尽管它在语法上是行得通的。

纯虚函数最显出的两个特征:

1、它们必须由继承它们的非抽象类重新说明。

2、它们在抽象类中没有定义。

因此纯虚函数的目的就是使派生类必须实现某种功能

虚函数的目的就是使派生类即继承缺省的实现,也同时继承了函数接口。

当然使用虚函数时要慎重使用它的缺省实现。

一般都是纯虚函数与虚函数配合使用,或者纯虚函数与实函数配合使用,即让派生类必须具备某种功能,又提供了可以重用的缺省代码。

虚函数是动态联编的基础,属于包含多态类型,虚函数是非静态的成员函数,虚函数经过派生之后,在类族中就可以实现过程中得多态。虚函数的定义实际就是在原有的普通函数成员前面使用virtual关键字来限定,虚函数声明只能出现在函数原型声明中,而不能在成员的函数体实现的时候。

纯虚函数是一个在基类中说明得虚函数,他在该基类中没有定义具体的操作内容,要求各派生类根据实际需要定义自己的版本。实际上,他与一般虚函数成员在书写格式上的不同就在于后面加了"=0 "。声明为纯虚函数之后,基类中就不再给出函数的实现部分。纯虚函数得函数体由派生类给出。

多态性的实现与静态联编、动态联编有关。静态联编支持的多态性称为编译时的多态性,也称静态多态性,它是通过函数重载和运算符重载实现的。动态联编支持的多态性称为运行时的多态性,也称动态多态性,它是通过继承和虚函数实现的。

相关文档
最新文档