关于Virtual Base Class的几点说明

王朝other·作者佚名  2006-02-01
窄屏简体版  字體: |||超大  

关于Virtual Base Class的几点说明

先看以下的几个程序的输出的多少

1:

#include <iostream>

using namespace std;

void main()

{

class a{};

class b:public virtual a{};

class c:public virtual a{};

class d:public b,public c{};

cout<<sizeof(a)<<endl<<sizeof(b)<<endl<<sizeof(c)<<endl<<sizeof(d)<<endl;

}

2:

#include <iostream>

using namespace std;

void main()

{

class a{int i;};

class b:public virtual a{int j;};

class c:public virtual a{int k;};

class d:public b,public c{};

cout<<sizeof(a)<<endl<<sizeof(b)<<endl<<sizeof(c)<<endl<<sizeof(d)<<endl;

}

3:

#include <iostream>

using namespace std;

void main()

{

class a{};

class b:public a{};

class c:public a{};

class d:public b,public c{};

cout<<sizeof(a)<<endl<<sizeof(b)<<endl<<sizeof(c)<<endl<<sizeof(d)<<endl;

}

4:

#include <iostream>

using namespace std;

void main()

{

class a{int i;};

class b:public a{int j;};

class c:public a{int k;};

class d:public b,public c{};

cout<<sizeof(a)<<endl<<sizeof(b)<<endl<<sizeof(c)<<endl<<sizeof(d)<<endl;

}

具体的结果得更具具体的编译器而定

在VC上运行得出来的结果分别是

1:1 4 4 8

2:4 12 12 20

3:1 1 1 1

4:4 8 8 16

在原始一点的C++编译器上运行的结果又会不一样

1:1 8 8 12

2:4 12 12 20

3:1 1 1 1

4:4 8 8 16

出现上面的结果主要是因为:

不想写了 ,想知道请留言 我会一一解答

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航