zz_xiao_cai 2017-10-25 08:43 采纳率: 0%
浏览 1205

对于类中有虚函数的时候,对象所占空间,字节对齐方式有变化么

最近的一个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呢?

  • 写回答

3条回答 默认 最新

  • oyljerry 2017-10-25 09:02
    关注

    要考虑字节对齐。double在64位下是8字节

    评论

报告相同问题?

悬赏问题

  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能