虚表指针初始化

2021/12/28 23:15:23

本文主要是介绍虚表指针初始化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 构造函数中能调用虚函数,也能确定虚表指针的存在。

能否通过下面的结果确定虚表指针在构造函数调用前就初始化好了?欢迎赐教

class A
{
    typedef void(*fp)();
public:
    virtual void foo() { cout << "virtual void foo()" << endl; }
    virtual void bar() { cout << "virtual void bar()" << endl; }
    A()
    {
        cout << "A()" << endl;
        int* p = (int*)*(int*)(this);
        cout << p << endl;
        fp f = (fp)(*p);
        f();
        f = (fp)(*(p + 1));
        f();
    }
};
void test()
{
    A a1, a2;
    int* p = (int*)*(int*)(&a1);
    cout << p << endl;
    p = (int*)*(int*)(&a2);
    cout << p << endl;
}



这篇关于虚表指针初始化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程