2016.09.24

重新开始学习C++

虚函数


  
1. 在继承中,只有当使用指针或引用的方式来调用虚函数时,虚函数才能发挥多态性的作用。
  
2. 只有被说明为虚函数的那个成员函数才具有多态性。
  
3. 被继承的虚函数仍然是虚函数。


系统是如何调用虚函数的

  每个对象创建虚函数时,对象都得记录这个虚函数,因此编译器建立了一个叫做T表的虚函数表。每个对象都有一个指向该表的指针,叫做虚表指针,该指针用来指向虚函数表。虚函数表也有一个指针指向该对象,当创建派生类对象的基类部分时,该对象的指针就自动初始化为指向虚函数表的正确部分。当调用派生类对象的构造函数时,这个对象就会添加到虚函数表中去,并且将指针指向该对象的重载函数。当使用指向基类的指针时,根据对象的实际类型,将该对象的指针继续指向正确的函数。

猜你喜欢

转载自blog.csdn.net/moli1949/article/details/80531695