首页 > 试题广场 >

下面代码打印结果为()class Base {&nbs...

[单选题]
下面代码打印结果为()
class Base {
char data[3];
public:
virtual void f() { cout << "Base::f" << endl; }
virtual void g() { cout << "Base::g" << endl; }
virtual void h() { cout << "Base::h" << endl; }

};
int main()
{
cout << sizeof(Base)<< endl;
return 0; 
}


  • 6
  • 7
  • 8
  • 9
虚函数会保存一个虚表指针,考虑字节对齐
发表于 2019-08-21 20:38:07 回复(0)
数组占了3个字节,还有一个虚表指针(无论创多少个虚函数,都只有一个),其在32位系统,占2个字节,在64位系统,占4个字节。因此3+2或3+4。但是为了字节对齐,会被强行凑成4的倍数,也就只有最接近的8。
发表于 2019-10-27 14:47:30 回复(0)
3+4+1=8
发表于 2019-10-14 08:17:30 回复(0)