虚函数数据偏移量和虚函数指针和虚函数表定义
作者:互联网
两个int
sizeof//8
int a1;//0 int a2;//4 两个int+一个虚函数fun1 sizeof//12 (vptr//0) int a1;//4 int a2;//8 两个int+两个虚函数fun1fun2 sizeof//12 (vptr//0) int a1;//4 int a2;//8 vptr定义 void * fun[]={&fun1,&fun2}; const void ** vptr=&fun[0]; vptr只是一个指针,指向一个数组首元素,数组中元素是函数的地址,数组叫做虚函数表 两个int+两个虚函数,有两个对象b1b2 b1: vptr int a1; int a2; b2: vptr int a1; int a2; 两个对象的vptr都指向同一个数组首元素,数组中元素是函数地址,数组叫做虚函数表 虚函数表在编译时期创建好,只存在一份,定义类对象时,编译器将对象的虚函数指针指向虚函数表
int a1;//0 int a2;//4 两个int+一个虚函数fun1 sizeof//12 (vptr//0) int a1;//4 int a2;//8 两个int+两个虚函数fun1fun2 sizeof//12 (vptr//0) int a1;//4 int a2;//8 vptr定义 void * fun[]={&fun1,&fun2}; const void ** vptr=&fun[0]; vptr只是一个指针,指向一个数组首元素,数组中元素是函数的地址,数组叫做虚函数表 两个int+两个虚函数,有两个对象b1b2 b1: vptr int a1; int a2; b2: vptr int a1; int a2; 两个对象的vptr都指向同一个数组首元素,数组中元素是函数地址,数组叫做虚函数表 虚函数表在编译时期创建好,只存在一份,定义类对象时,编译器将对象的虚函数指针指向虚函数表
标签:a1,函数,int,偏移量,vptr,a2,数组,函数指针 来源: https://www.cnblogs.com/zhouzihong/p/15061440.html