关于虚函数表

来源:互联网 发布:职场女英文名知乎 编辑:程序博客网 时间:2024/05/07 03:29

在C++的标准规格说明书中说到,编译器必需要保证虚函数表的指针存在于对象实例中最前面的位置(这是为了保证正确取到虚函数的偏移量)。 这意味着我们通过对象实例的地址得到这张虚函数表,我们强制类型转换获取的对象地址实际就是虚函数表的地址
对于单一继承,没有虚函数覆盖的情况,基类和派生类的相同函数地址是一致的,也就是你提到的指针不会发生变化
但是如果单一继承出现虚函数覆盖(特别是第一个函数覆盖)的情况,这个函数地址就不一致了,就会出现指针不同的问题
实际情况就是虚函数被覆盖或者不是第一个基类都会出现指针不同的情况

原创粉丝点击