1,使用初始化列表初始化参数的顺序不是根据参数列表里声明的顺序,而是根据该成员变量在类中声明的顺序决定的。
et.
class A
{
public:
A();
~A();
private:
int a;
byte b;
}
A::A():b(1),a(b)
{
}
a的值无法确定,而b是1
2,在data语义学中
找到了一个一年困扰过我的问题,总算得到解答
class X;
class A:class X;
class B:class X;
class Y:class A, class B;
sizeof(X):1
sizeof(A):8
sizeof(B):8
sizeof(Y):12
编译器对空类会做优化给予一个char的大小
至于A,B 由于有继承关系存在虚函数表,size应为5,在4字节对其的编译器下sizeof为8,当然设定字节对齐为1的话应该是5