Наличие VPTR в подобъектах

У меня есть «базовый» класс с виртуальным деструктором и, следовательно, VTable и соответствующий VTPR в нем, а также производный от него класс:

class base {
public:
    virtual ~base() {}
};

class der : base {};

main()
{

    int a = sizeof(base); // = 4, fine !

    int b = sizeof(der);  // = 4 too ?
}

Теперь, поскольку производный класс также является виртуальным, он будет иметь собственный VPTR, но, поскольку он также имеет подобъект базового класса с VPTR, не должен ли размер класса 'der' быть 8 байтов, т.е. размер VPTR класса 'der' + размер VPTR подобъекта класса 'base'? (когда sizeof (void *)= 4 байта ).

Итак, в основном мой вопрос: :Когда подобъект класса 'base' создается в 'der', есть ли у него отдельный новый VPTR? И если это так, то почему его размер не добавляется при вычислении размера der?

Может кто-нибудь, пожалуйста, проясните это.

0
задан cirronimbo 5 June 2012 в 14:58
поделиться