虚表指针和虚函数表
1.虚函数表指针(vptr)创建
vptr跟着对象走,所以对象什么时候创建出来,vptr就什么时候创建出来,也就是运行的时候。 (1)当程序在编译期间,编译器会为构造函数中增加为vptr赋值的代码(这是编译器的行为),
(2)当程序在运行时,遇到创建对象的代码,执行对象的构造函数,那么这个构造函数里有为这个对象的vptr赋值的语句。
2.虚函数表创建时机
虚函数表创建时机是在编译期间。编译期间编译器就为每个类确定好了对应的虚函数表里的内容。 所以在程序运行时,编译器会把虚函数表的首地址赋值给虚函数表指针,所以,这个虚函数表指针就有值了。
#C/C++#