c++中虚方法表的几个问题


class A {
    public : 
    int a;
    virtual void fun() {}
    virtual void init() {}
};
class B {
    public :
    int b;
    virtual void sum() {}
};
class C : public A, public B{
    public : 
    int c;
    virtual void dud() {
        printf("ccc");}
};

在上面的类层次结构中,有些书上说,C.dud()的指针在A的VMT中,C在C的CIR中。

但是当调试visual studio 2010时,没有C.dud()的入口…

c.dud()的指针在哪里?

虚值表是实现定义的。您的书可能与您的目标架构不匹配。您应该参考您的系统/体系结构的ABI来获取此类信息。这种规范的一个例子是:http://refspecs.linux-foundation.org/cxxabi-1.83.html#vtable。请注意,此规范(适用于Linux)没有提到缩写词"VMT"或"CIR"(同样,因为它是实现定义的)。

相关内容

  • 没有找到相关文章

最新更新