Каким может быть размер obj следующих производных классов. Выход в 64-битной среде - 24 и 24. Но я ожидаю, что он будет 32 и 40, принимая виртуальную таблицу для каждого класса.
Не могли бы вы уточнить, почему вывод только 24?
#include <iostream>
using namespace std;
class Base1
{
virtual void fun1() { cout << "Base1::fun1()" << endl; }
};
class Base2 {
virtual void fun1() { cout << "Base2::fun1()" << endl; }
};
class Base3 {
virtual void fun1() { cout << "Base3::fun1()" << endl; }
};
class Derive : public Base1, public Base2, public Base3
{
public:
virtual void Fn()
{
cout << "Derive::Fn" << endl;
}
virtual void Fnc()
{
cout << "Derive::Fnc" << endl;
}
};
class Derive1 : public Derive
{
public:
virtual void Fn1()
{
cout << "Derive::Fn" << endl;
}
virtual void Fnc2()
{
cout << "Derive::Fnc" << endl;
}
};
int main()
{
Derive obj;
Derive1 Obj1;
cout << sizeof(obj);
cout << sizeof(Obj1);
return 0;
}