关于类大小的困惑(此类含虚函数、此类虚继承)

mac2022-06-30  18

EX1:****************************************************************************

class A { public: char a[3]; virtual void aa(){}; }; class B : virtual public A { public: char b[3]; virtual void bb(){}; }; class C : virtual public B { public: char c[3]; virtual void cc(){}; }; int main() { cout << sizeof(A) << endl; cout << sizeof(B) << endl; cout << sizeof(C) << endl; return 0; } /* * 8 16 24 */

EX2:****************************************************************************

class A { public: char a[3]; virtual void aa(){}; }; class B : public A { public: char b[3]; virtual void bb(){}; }; class C : public B { public: char c[3]; virtual void cc(){}; }; int main() { cout << sizeof(A) << endl; cout << sizeof(B) << endl; cout << sizeof(C) << endl; return 0; } /* * 8 12 16 */

EX3:****************************************************************************

class A { public: // char a[3]; virtual void aa(){}; }; class B : virtual public A { public: // char b[3]; virtual void bb(){}; }; class C : virtual public B { public: // char c[3]; virtual void cc(){}; }; int main() { cout << sizeof(A) << endl; cout << sizeof(B) << endl; cout << sizeof(C) << endl; return 0; } /* * ... */

EXN:****************************************************************************

.............................................................................................................................................................................................................................................................. .............................................................................................................................................................................................................................................................. 迷惑不懂,求懂的人讲解下?以上情况中的 虚不虚继承的区别在哪?有没有char a[]等数据的区别等等区别?

转载于:https://www.cnblogs.com/XBin/archive/2012/09/29/2853627.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)