2013-05-18 7 views
1
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() находится в ВМТ А и С в CIR С.некоторые вопросы о виртуальной таблице методов в C++

но когда отладка с визуальной студией 2010, нет записи для C.dud() где угодно ...

Где указатель c.dud() для VMT ??

ответ

3

Vtable - это реализация. Ваша книга может не соответствовать вашей целевой архитектуре. Для такой информации вы должны обратиться к ABI вашей системы/архитектуры. Пример такой спецификации: http://refspecs.linux-foundation.org/cxxabi-1.83.html#vtable. Обратите внимание, что эта спецификация (которая для Linux) не упоминает акронимы «VMT» или «CIR» (опять же, поскольку это реализация определена).

 Смежные вопросы

  • Нет связанных вопросов^_^