虚函数与纯虚函数

虚函数:被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。例如可以使用父类的指针指向子类的实例,然后再通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有多种形态,这是一种泛型技术。

  • 虚函数的声明如下:virtual ReturnType FunctionName(Parameter);
    虚函数必须要实现,如果不实现,编译器将会报错。

纯虚函数:在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。为了解决这个问题,方便使用类的多态性,引入了纯虚函数的概念,将函数定义为纯虚函数(方法:virtual ReturnType Function()= 0;),则编译器要求在派生类中必须予以重写以实现多态性。同时含有纯虚拟函数的类称为抽象类,它不能生成对象。

  • 什么时候使用纯虚函数
    1.当想要在基类中抽象出一个方法,而且这个基类只能够被继承,而不能够被实例化;
    2.这个方法必须要在派生类(derived class)中被实现;
    纯虚函数的定义方法为:vritual ReturnType Function(Type) = 0;

虚函数详解

虚函数表

虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的.在这个表当中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖的问题.保证其能够真实的反应实际的函数.这样,在有虚函数的类的实例中,这个表被分配在了这个实例的内存当中.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.虚函数与纯虚函数 在他们的子类中都可以被重写.它们的区别是: (1)纯虚函数只有定义,没有实现;而虚函数既有定...
    kexinJiao阅读 10,576评论 0 1
  • C++虚函数 C++虚函数是多态性实现的重要方式,当某个虚函数通过指针或者引用调用时,编译器产生的代码直到运行时才...
    小白将阅读 5,672评论 4 19
  • 参考来源:知乎 定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的...
    夜幕青雨阅读 4,278评论 0 6
  • 期待一份爱情 只要爱情便好 活动连接|七夕征文 简书第一篇文章,竟然...
    c65b8f7384f0阅读 2,750评论 35 6
  • 可能因为我原本就是个好奇心十分旺盛的人,也可能我阅读的关于思维导图的入门书它就告诉我思维导图是可以用在生活的方方面...
    SHEROtomorrow阅读 8,515评论 0 3

友情链接更多精彩内容