(3)带static成员时
1 class A {
2 private :
3 int value;
4 double a;
5 static int CST;
6 public:
7 };
8
9 cout << sizeof(A) << endl; //16
因为static成员是分配在全局区为类的所有对象共享(VC编译器可能为了方便将其放入文字常量表), sizeof时不应该计入sttic成员
(二)继承关系下
(1)单继承情况下
总体上讲, 派生类中需要考虑基类子类型(subtype)的问题,派生对象要考虑基类子对象的问题。
1 class A
2 {
3 public:
4
5 private:
6 int m1;
7 double m2;
8 };
9
10 class B : public A
11 {
12 public:
13
14 private:
15 int m3;
16 };
17
18 cout << sizeof(A) << endl; // 16
19 cout << sizeof(B) << endl; // 24
20
同样,要考虑陷阱:基类对齐字节不等于大小,如下例: