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