谭浩强《C++程序设计》学习篇———虚函数

来源:互联网 发布:怎么淘宝 卖 二手书 编辑:程序博客网 时间:2024/05/29 10:49

谭浩强《C++程序设计》学习篇———虚函数

一、定义
定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数。

语法:virtual 函数返回类型函数名(参数表) { 函数体 }   

用途:实现多态性,通过指向派生类的基类指针,访问派生类中同名覆盖成员函数  虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public。

定义为virtual的函数是基类期待派生类重新定义的,基类希望派生类继承的函数不能定义为虚函数。

 

二、作用

当把基类的某个成员函数声明为虚函数后,允许其在派生类中对该函数重新定义,赋予其新的功能,并且可以通过指向基类的指针指向同一类族中不同类的对象,从而调用其中的同名函数。

由虚函数实现的动态多态性就是:同一类族中不同类的对象,对同一函数调用作出不同的响应。

 

三、动态关联

基类指针变量先指向了某一个类对象,然后通过此指针调用该对象中的函数,这样的调用在编译时是无法确定调用哪一个类的虚函数的,所以在运行阶段确定关联关系。

这种多态性是动态多态性,即运行阶段的多态性。

 

虚析构函数:


(截图来自谭浩强《C++程序设计》

p是指向基类的指针变量,指向new开辟的动态存储空间,当基类中的析构函数没有声明为virtual时,只会执行Point的析构函数,如果希望能先执行Circle的析构函数,需要将基类的析构函数声明为virtual.

 

四、纯虚函数

定义:基类中声明一个虚函数,留待派生类中定义

语法:virtual 函数类型函数名(参数列表)=0

作用:在基类中为派生类保留一个函数的名字,以便派生类根据需要对它进行定义


0 0
原创粉丝点击