例子,求下面的程序输出。
/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: |