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

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

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

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

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

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

 

二、作用

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

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

 

三、动态关联

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

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

 

虚析构函数:


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

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

 

四、纯虚函数

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

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值