对于class A,
(1)由于含有虚函数,包含虚函数指针,大小4字节。
(2)a数组的类型是char,大小是3,占3字节,因为需要前面对齐到4的整数倍,所以有1个占位符。
因此,总的大小是4+3+1=8
对于class B,
(1)由于含有虚函数,包含虚函数指针,大小4字节。
(2)b数组类型是char,大小是3,占3字节。因为需要前面对齐到4的整数倍,所以有1个占位符。
(3)继承A的char数组,大小是3,占3字节。因为需要前面对齐到4的整数倍,所以有1个占位符。
因此,总的大小是4+3+1+3+1=12
对于class C,
(1)由于含有虚函数,包含虚函数指针,大小4字节。
(2)c数组类型是char,大小是3,占3字节。因为需要前面对齐到4的整数倍,所以有1个占位符。
(3)由于是虚继承,有一个指向父类的指针,大小字节。
(4)父类A本身大小为8字节。
因此,总的大小为4+3+1+4+8=20