CPP学习之——系统是如何调用虚函数的(13.10)

一 概述

  • 每个对象创建虚函数时,对象都记录这个虚函数,因此编译器建立一个叫做T表的虚函数表。每个对象都有一个指向该表的指针,叫做虚标指针。

二 过程

  • 该指针用来指向虚函数表。
  • 相反虚函数表也有一个指针指向该对象,当创建派生类对象的基类部分时,该对象的指针就自动初始化为指向虚函数表的正确部分。
  • 当调用派生类对象的构造函数时,这个对象就会添加到虚函数表中去,并且将指针指向该对象的重载函数
  • 当使用指向基类的指针时,将根据对象的实际类型,将该对象的指针继续指向正确的函数