C++的虚函数表

C++的虚函数表一直以来很神秘,感觉是很高深的东西。

看了 http://www.learncpp.com/cpp-tutorial/125-the-virtual-table/ 这篇文章,顿时明白了什么是虚函数表。

没有虚函数的C++类,是不会有虚函数表的。

有虚函数的C++类,才会有虚函数表

class Base
{
public:  
    virtual void function1() {};
    virtual void function2() {};
private:
    int    a;
};
Base b;
int nSize = sizeof(Base);

nSize的大小为8. 此对象由 a 和 vfptr构成,vfptr是一个指针变量,它占据了对象b的前4字节内存,

所以*(unsigned*)&b的值就是Base的虚函数表所在的地址了*(unsigned*)(*(unsigned*)&b))的值,即为funtion1的地址了。

原文链接: https://www.cnblogs.com/xueguangfeng/archive/2012/03/11/2389949.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++的虚函数表

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/43913

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 下午8:34
下一篇 2023年2月8日 下午8:34

相关推荐