как определить размер класса с виртуальными функциями?

это своего рода домашнее задание. Для следующего кода

#include <iostream>
using namespace std;

class A
{
public:
    virtual void f(){}
};

class B
{
public:
    virtual void f2(){}
};

class C: public A, public B
{
public: 
    virtual void f3(){}
};

class D: public C
{
public:
    virtual void f4(){}
};

int main()
{
    cout<<sizeof(D)<<endl;
}

вывод: 8

Кто-нибудь может объяснить, как это 8 байтов? Если реализация vtable зависит от компилятора, что я должен ответить на такой вопрос в интервью? А как насчет виртуальных базовых классов?

РЕДАКТИРОВАТЬ: я работаю на 32-битной платформе.

6
задан jogojapan 18 September 2012 в 05:05
поделиться