C++中多态类中的虚函数表和虚函数表指针建立时间
答:1. 虚函数表在编译期建立,虚函数的地址存放于虚函数表之中
2.虚函数表指针在运行期建立,也就是构造函数被调用时进行初始化的
C++虚函数表和虚函数表指针与类和对象的关系
如果一个类中含有虚函数,那么其虚函数表和虚函数指针的归属和存储位置如下所示
类 | 对象 | 存储位置 | 建立时间 | |
---|---|---|---|---|
虚函数表 | 含有 | 不含有 | 只读数据段 | 编译期间 |
虚函数表指针 | 不含有 | 含有 | 堆栈段 | 运行期间 |
C++虚函数表和虚函数表指针与继承的关系
答:1. 基类与派生类的虚函数表不是同一个表
if 派生类没有重写基类虚函数 && 派生类中没有新增的虚函数
派生类虚函数表的内容 = 基类虚函数表的内容
else
派生类虚函数表的内容 != 基类虚函数表的内容
2. 对于多继承来说,派生类中虚函数表的个数等于派生类中含有虚函数的基类的个数;对于派生类中新增的虚函数来说,该虚函数位于派生类的第一个虚函数表中