美文网首页
c++多态 学习笔记

c++多态 学习笔记

作者: 奋斗中的菜鸡 | 来源:发表于2018-10-15 18:08 被阅读0次

今天印象最深的就是学习c++多态这一块了,年幼的时候听说过这个东西,但限于当时的眼界太窄,对于这块东西没有深入研究过,只是单纯的记住了这个特性。今天怀着无比崇拜的心情,膜拜了一下年幼时候曾经向往的大佬。
言归正传
多态,说白了就是可以用父类的指针(或引用)动态的访问子类实际成员函数的一种操作。btw,继承和虚函数是多态的基础。
当我们创建一个子类的对象,把指针丢给父类指针类型的时候,可以通过我们的父类指针访问到子类的该虚函数方法。底层这一块时怎么做到的呢?
编译阶段,c++底层为我们当前类构造一个虚表,用来存放我们当前虚函数的函数地址。当我们在实例化对象的时候底层其实又额外提供了一个虚指针给我们,暂且用vptr来表示,该vptr在调用父类的构造函数时指向父类的虚表,紧接着调用子类构造函数时指向子类的虚表即自身的虚表,这个指针才是实现多态的关键,说到这里大家大致都明白了把。
当我们,在使用子类的指针的时候,其实是使用这个vptr来访问我们的虚函数,才得以定位到当前子类的虚方法。
说白了,当涉及到多态的时候,不在单独考虑指针/引用的类型而是看指针/引用的对象的类型来判断函数的调用,而是根据对象中虚指针指向的虚表中的函数的地址来确定调用哪个函数。
以上就是这次的讨论的内容了
如果哪里有不对的地方,希望各位道友帮忙指正。

相关文章

  • c++多态 学习笔记

    今天印象最深的就是学习c++多态这一块了,年幼的时候听说过这个东西,但限于当时的眼界太窄,对于这块东西没有深入研究...

  • 深刻剖析之c++博客文章

    三大特性 封装、继承、多态 多态 C++ 虚函数表解析C++多态的实现原理 介绍了类的多态(虚函数和动态/迟绑定)...

  • c++ 多态笔记

    静态多态: 早绑定 --->函数重载 在编译时就已经确定调用哪个函数 动态多态: 晚绑定 --->继承类间的同名函...

  • C++学习笔记(六)多态(下)

    1、静态成员函数 只有非静态成员函数才可以成为虚函数,而静态成员函数不能声明为虚函数。 例1: 在本例中定义了一个...

  • C++学习笔记(六)多态(上)

    1、多态的概念及前提条件 在C++程序中,程序的每一个函数在内存中会被分配一段存储空间,而被分配的存储空间的起始地...

  • C++学习笔记:(五)继承&&多态

    本文章分为知识点、例子和心得,交流群728483370,一起学习加油! 7.组合、继承与多态性 7.1 组合 7....

  • Java中的多态

    学习笔记:多态参考文章:Java多态的介绍[https://blog.csdn.net/newchitu/arti...

  • C++学习笔记

    # C++学习笔记(原创)

  • C++ STL 学习笔记

    C++ STL 学习笔记

  • C++学习笔记

    # C++学习笔记(原创)

网友评论

      本文标题:c++多态 学习笔记

      本文链接:https://www.haomeiwen.com/subject/axdiaftx.html