C学习笔记-利用对象、引用、指针调用虚函数.docVIP

  • 4
  • 0
  • 约3.97千字
  • 约 7页
  • 2017-05-20 发布于北京
  • 举报

C学习笔记-利用对象、引用、指针调用虚函数.doc

C学习笔记-利用对象、引用、指针调用虚函数

C++学习笔记(13)——利用对象、引用、指针调用虚函数 虚函数实现原理说明: ??????? 在“C++学习笔记(12)——多态与虚函数?”中,每个类的大小比起所有成员数据多4个字节,表明有虚函数的类的大小还要加上一个紧缩的空指针类型的大小。这说明了该在包含虚函数的类中,编译系统自动加入了一些表明类型的信息。   当一个类中拥有虚函数时,编译系统将为该类创建一个数组VTABLE。VTABLE的元素是虚函数的地址,且同一虚函数的地址在基类和派生类的VTABLE中相对首位置的偏移是一样的。同时,编译系统还加入了相应的调用虚函数的代码。所有这些都是不需要程序员作的工作,由系统自动完成。在初始化该类对象时,将加入一个指向VTABLE的指针,这个指针一般称为VPTR。一般来说,VPTR位于该类对象的存储单元的最开始部位。 ??????????????????????????   这样,当VPTR被正确的初始化之后,便指向了该对象的VTABLE,从而在对象及其特定的虚函数定义间建立了联系。从虚函数调用的意义上来说,VPTR表明了类型信息,因为它使得调用与类型相符合。 ? ??????? 本例(见下文)可以看到,不管类层次进行了多少扩充,对于已有类对象的操作都不必作出改动。从这一点来看,虚函数所体现的运行时多态,大大提高了软件的可扩充性。我们知道,系统的设计者在初期集中于整个系统框架的合理

文档评论(0)

1亿VIP精品文档

相关文档