最近的一个bug,让我发现对于类中的字节对齐还是有模糊地方,望大家指点
先上一段测试代码
class CPoint
{
private:
double x, y;
char a;
public:
CPoint(double i, double j)
{
x = i;
y = j;
}
virtual double area() const
{
return 0;
}
};
在main 函数中这样调用:
CPoint point(1, 2);
cout << " point size is : " << sizeof(point) << endl;
在win10 64位 vs2012 下,我以为输出24,运行结果为 32,表示不解
把x 和 y的类型改为 int,其它都不变,我觉得输出为16,运行结果也为 16
请问,指向虚函数表的指针,在这个运行环境下,不应该是固定的4个字节么,为什么x,y为double类型时,对象的总长度会是32呢?