弄得我很晕的东西,不知道哪位高手能解决不?谢谢哈:)给出下面程序的输出并给出理由:
#include<iostream>
#include<string>
#include<fstream>
#include<iomanip>
#include<ctime>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
class V
{
//double a;
public:
virtual void Fun(){}
};
class Iv1:public V{char b;};
class Iv2:public V{char b;};
class Iv3:public V{char b[5];};
class Iv4:public V{};
class R{};
class Ir1:public R{double a;};
class Ir2:public R{};
class Ir3:public R{};
class Ir4:public R{};
class Ir5:public R{};
class I:public Iv1,Iv2,Iv3,Iv4
{
};
class C1{char c1[16];};
class C2{char c2[1];};
class C3{};
class C4{};
class C5{};
class Ir:public Ir1,public Ir2,public Ir3,public Ir4
{
};
class Ic:public C1,public C2,public C3,public C4
{
};
class TestI:public Iv1,public Iv2,public Iv3,public Ir1,public Ir2,public Ir3,public Ir4,public C1,public C2,public C3,public C4,public C5
{
};
void main()
{
cout<<endl<<"sizeof(I):"<<sizeof(I);
//Ic ic;
//cout<<endl<<"sizeof(ic):"<<sizeof(ic);
Ir ir;
cout<<endl<<"sizeof(ir):"<<sizeof(ir);
Ic ic;
cout<<endl<<"sizeof(ic):"<<sizeof(ic);
cout<<endl<<"sizeof(TestI):"<<sizeof(TestI);
}
谢谢各位的回答。
其实struct的对齐我是明白的,我不明白的是:
(1)一个类继承多个空类时,它的各个空的父类对它的大小产生什么样的影响?
(2)如果这些空的父类中的一部分又由一个类派生而来,会不会需要对(1)做什么修正?