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字节呢?
我猜测是不是因为内存对齐的问题,求解释呀!各位大神