关于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
顺便更正上面的答案
多一重虚拟继承,增加一个虚拟指针。