#include<iostream>
class a
{     virtual void f() = 0;
};
class b : virtual a {     b() {}
};
class c :virtual a
{     virtual void f();
};
int main()
{     std::cout << sizeof(a) << "\n" << sizeof(b) << "\n"<<sizeof(c)<<"\n";
}
改成这样之后输出的是 4 8 8
b里的有函数且又有虚函数会变成12,口胡一波,b里两个虚函数指针size 8,b本身有函数声明于是偏移量+1,对齐四位之后就是12了

另外:GCC出来size是4 4 4……