VC 7.0
class Base
{
public:
virtual void fun(){}
int i_;
};
class Derived : virtual public Base
{
public:
//Derived(){}
void fun(){}
double d_;
};
C закомментированным конструктором размер Derived 24, если убрать комментарий — 28.
Оригинально!
Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>C закомментированным конструктором размер Derived 24, если убрать комментарий — 28.
L_L>Оригинально!
Несомненно.
Поставив перед структурами #pragma vtordisp(off), вы можете убедиться, что лишние 4 байта нужны только для корректной работы конструкторов и деструктора, поскольку в противном случае
the virtual function may be passed an incorrect this pointer as a result of discrepancies between the displacements to the virtual bases of a class and the displacements to its derived classes.
Удачи!
Сергей Дмитриев