64位Ubuntu下的奇怪输出结果,sizeof(Class)
Shape.h的代码定义如下:
class Shape { public: Shape(); virtual ~Shape(); virtual double calcArea(); };
Circle.h的代码定义如下:
class Circle: public Shape { public: Circle(int radius); ~Circle(); //double calcArea(); protected: int m_radius; };
Main.cpp主函数的代码及输出结果为:
int main(void) { Shape sh; cout << sizeof(sh) << endl; // Output: 8 Circle ci(100); cout << sizeof(ci) << endl; // Output: 16 return 0; }
这里就对第二输出16不理解了,Shape类由于有虚函数表指针占8字节,Circle自身只有int类型的一个变量占4字节,那总共应该8+4=12字节呀?为啥这里是16字节呢?
我猜测是不是因为内存对齐的问题,求解释呀!各位大神