2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | #pragma once #include <iostream> class X {public: char c1, c2;}; class Y : public virtual X { }; class Z : public virtual X {}; class A : public Y, public Z {}; /* * @Func : 测试编译器对Empty Virtual Base是否会进行特殊处理及Alignment * * @测试方法:(1)对于Empty Virtual Base情形,评估类层次中类的大小;(2)对于Alignment情形,评估字节数<4及>4的不同 * * @测试结果及分析 * (1) 输出结果为 sizeof X 1 sizeof Y 4 sizeof Z 4 sizeof A 8 * (2)输出结果为 当字节数<4时,不进行alignment, char c[2]→2 当字节数>4时,进行alignment,int n; char c→8 */ void Test_EVBC(){ std::cout << "sizeof X " << sizeof(X) << std::endl; std::cout << "sizeof Y " << sizeof(Y) << std::endl; std::cout << "sizeof Z " << sizeof(Z) << std::endl; std::cout << "sizeof A " << sizeof(A) << std::endl; } |
联系客服