C++ 虚函数 总结

虚函数是 C++ 实现多态的方式。

  • 什么是多态?
    多态性常被视为自封装和继承之后,面向对象的编程的第三个支柱。
    如果举一个简单的例子,比如有动物(Animal)之类别(Class),而且由动物继承出类别鸡(Chicken)和类别狗(Dog),并对同一源自类别动物(父类别)之一消息有不同的响应,如类别动物有“叫()”之动作,而类别鸡会“啼叫()”,类别狗则会“吠叫()”,则称之为多态。
    根据维基百科上所解释,多态可定义为,“一种将不同的特殊行为和单个泛化记号相关联的能力”,是指计算机程序运行时,相同的消息可能会送给多个不同的类别之对象,而系统可依据对象所属类别,引发对应类别的方法,而有不同的行为。简单来说,所谓多态意指相同的消息给予不同的对象会引发不同的动作称之。

虚函数是动态多态,在运行时决定,只有在程序运行时才决定调用基类的还是子类的,系统会根据基类指针所指向的对象来决定要调用的函数。

  • 如何声明虚函数?
    在声明前加上virtual关键字来声明虚函数。在父类中声明,在子类中做具体实现。

  • 什么是纯虚函数?
    纯虚函数是在声明虚函数时赋值为0的函数,使用这种声明方式后,继承类必须对该虚函数做实现。

  • 虚函数是如何实现的?
    通过虚表来实现的。每个对象里有虚表指针,指向虚表。虚表实质上是一个数组而不是什么链表。虚函数的地址按照声明顺序依次存放在虚表中。

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

推荐阅读更多精彩内容

  • C++虚函数 C++虚函数是多态性实现的重要方式,当某个虚函数通过指针或者引用调用时,编译器产生的代码直到运行时才...
    小白将阅读 5,672评论 4 19
  • 1. 结构体和共同体的区别。 定义: 结构体struct:把不同类型的数据组合成一个整体,自定义类型。共同体uni...
    breakfy阅读 6,457评论 0 22
  • 一个博客,这个博客记录了他读这本书的笔记,总结得不错。《深度探索C++对象模型》笔记汇总 1. C++对象模型与内...
    Mr希灵阅读 10,992评论 0 13
  • 我们知道,在同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是“重复定义”。但是在类的继承层次...
    踩在浪花上00阅读 3,262评论 0 1
  • 2016中国(任丘)建筑门窗幕墙采购订货会 2016ChinaRenqiuConstructionWindow&D...
    水中草阅读 876评论 0 0

友情链接更多精彩内容