例子,求下面的程序输出。
/home/a/j/nomad2:cat ch3.CPP
#include <iostream>
using namespace std;
class X
{
};
class Y : public virtual X
{
/*
public:
char c;
*/
};
class Z : public virtual X
{
/*
public:
char d;
*/
};
class A : public Y, public Z
{
};
int main()
{
cout << sizeof(X) << endl;
cout << sizeof(Y) << endl;
cout << sizeof(Z) << endl;
cout << sizeof(A) << endl;
}输出如下:
/home/a/j/nomad2:uname -a
Linux ubuntu 2.6.24-22-generic #1 SMP Mon Nov 24 19:35:06 UTC 2008 x86_64 GNU/Linux
/home/a/j/nomad2:./a.out
1
8
8
16
|
Each class object, then, is exactly the size necessary to contain the nonstatic data members of its class. This size may at times surprise you as being larger than necessary, as it did my correspondent from France. This girth comes about
in two ways: |
本文通过一个C++程序示例,展示了不同类的大小,并解释了类大小可能超出预期的原因,包括编译器添加的数据成员和支持虚拟继承所需的额外开销。
1726

被折叠的 条评论
为什么被折叠?



