首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于C++类对象所占空间大小疑点3

2012-03-09 
关于C++类对象所占空间大小问题3#includeiostream#includememoryusingnamespacestdclassCA{public:do

关于C++类对象所占空间大小问题3
#include   <iostream>
#include   <memory>
using   namespace   std;
class   CA
{
    public:
    double   k;
public:
void   f()
{
cout < < "CA::F " < <endl;
}
};
class   CB:virtual   public   CA
{
};
class   CC:virtual   public   CA
{
};
class   CD:public   CB,public   CC
{
};
int   main()
{
CD   d;
d.f();
cout < <sizeof(d) < <endl;
return   0;
}
问题:
为什么在基类中将变量k声明为int时,程序运行显示12(4*3),而将变量k声明为double时,程序运行显示16(?*?)?

[解决办法]
虚类是因为里面有个 指针占3个字节
[解决办法]
To:snickersun(阳)
如果你把编译器里面的对齐方式设置为4字节对齐,则就是出现的16
顺便更正上面的答案
多一重虚拟继承,增加一个虚拟指针。

热点排行