C++面试宝典:static和虚函数表

一、类里面的 static 内存分布

static修饰的是
1、全局变量 2、局部变量 3、类里面的数据成员 4、类里面的成员函数
对于类里面的成员变量来说,对于所有的类来说都是可以被使用的,在类对象实例化之前就已经存在,存在全局数据区。
对于类里面的成员函数来说,静态成员函数不和任何的对象相关联,在text段(代码段)分配内存。

二、类里面的 virtual 内存分布

对于virtual来说,虚函数表的地址在每个对象的首地址,
1、如果类是局部变量,那么在栈区,否则动态分配的类在堆区
2、虚函数表的地址跟其他类中的成员变量一起存储,虚函数表中的指针指向数据段中的该类的虚函数表,然后该类的虚函数表给出具体要执行的函数是存在代码区哪个地址的。
C++面试宝典:static和虚函数表