虚函数与虚基类

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++中的纯虚函数也是一种“运行时多态”。



  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值