KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
The following code prints 20, i.e. sizeof(z) is 20. #include <iostream.h> class Base { public: int a; }; class X:virtual public Base { public: int x; }; class Y:virtual public Base { public: int y; }; class Z:public X,public Y { }; int main() { Z z; cout << sizeof(z) <<endl; } Whereas if I don't use virtual base classes here, i.e. for the following code : sizeof(z) is 16. #include <iostream.h> class Base { public: int a; }; class X:public Base { public: int x; }; class Y:public Base { public: int y; }; class Z:public X,public Y { }; int main() { Z z; cout << sizeof(z) <<endl; } Why is sizeof(z) more(20) in the first case? Shouldn't it be 12, since Base will be included only once in Z?
Tags (comma-separated)
Save Edits
Cancel