虚函数与虚基类

论坛 期权论坛 脚本     
已经匿名di用户   2022-5-29 19:30   877   0

1.虚函数是用于多态中virtual修饰父类函数,确保父类指针调用子类对象时,运行子类函数的。

2.纯虚函数是用来定义接口的,也就是基类中定义一个纯虚函数,基类不用实现,让子类来实现。

3.虚基类是用来在多继承中,如果父类继承自同一个父类,就只实例化一个父类(说的有点绕,就是只实例化一个爷爷的意思=。=)。

为了记住以上区别,首先,需要明白为什么要引入虚函数,虚函数的作用是什么,有什么优势。(可参考:http://blog.csdn.net/huangyimo/article/details/50480313

指针的灵活性,能实现多态重载。一个指针可以通过改变其指向的对象输出其与基类中相同的函数。相当于坐上一辆车后,你想到达不同地点只要告诉司机目的地就可以了。

总结 :1、虚函数

通过虚函数,在调用不同的衍生类的时候,可以拥有不同的功能。同时,我们可以通过将每个继承类都重写命名一个函数来替代也可以,这么做完全可以,只要你自己能熟记或者找到这个重命名函数是干嘛用的;但是在大一点的项目中,由于类中的函数成百上千,恐怕你就会为此疯狂。

虚基类:派生类多继承的,具有公共基类的基类。理解几条道路的汇合点。


纯虚函数:基类的虚函数是不用定义的,留给子类去实现。

当函数没有实现方法或者需要子类来定义实现方法的时候,可以在父类中定义纯虚函数。就是这么简单!于是当不同的子类继承这个父类的时候,定义不同的实现方法,那么实例化这个子类的时候,这个纯虚函数就有了不同的方法。这也解释了为什么包含纯虚函数的抽象类为什么不能实例化,因为它中间有函数根本不知道是怎么个实现!当然我们可以用其他方法避免使用纯虚函数,比方说在子类中重写print方法,但是这样一来等于除了order函数代码以外所有的代码都要重新复制一遍,当继承类越来越多的时候,要修改print等于这一堆继承类都要修改,会疯的!所以说纯虚函数是一个很神奇的用法,也是简化了编程使得面向对象的方法更加灵活。

参考:http://blog.csdn.net/huangyimo/article/details/50480313

2.纯虚函数(pure virtual)

  C++中包含纯虚函数的类,被称为是“抽象类”。抽象类不能使用new出对象,只有实现了这个纯虚函数的子类才能new出对象。

  C++中的纯虚函数更像是“只提供申明,没有实现”,是对子类的约束,是“接口继承”。

  C++中的纯虚函数也是一种“运行时多态”。



分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP