The size of C010 is 1 The detail of C010 is 01 The size of C011 is 2 The detail of C011 is 02 03 我们从对象的内存输出中可以看到,它们的值就是我们在构造函数中赋的值,C010为0x01,C011为0x0203。大小分别为1、2。
定义C012类。
struct C012 { static int sfoo() { return 1; } int foo() { return 1; } char c_; static int i_; }; int C012::i_ = 1; 在这个类中我们加入了一个静态数据成员,一个普通成员函数和一个静态成员函数。
运行如下代码打印它的大小及对象中的内容。
PRINT_SIZE_DETAIL(C012) 结果为:
The size of C012 is 1 The detail of C012 is cc 可以看到它的大小还是1字节,值为0xcc是因为我们没有初始化它,原因前面说过了。
The size of C014 is 2 The detail of C014 is 02 03 The size of C015 is 3 The detail of C015 is 01 02 03 C014的大小为2字节,也就是C011的大小,对象的内存值也是在C011的构造函数中初始化的两个值0x0203。C015的大小为3字节,也就是C010和C011的大小之和,对象的内存值为0x010203。
The size of C016 is 7 The detail of C016 is 01 02 03 01 00 00 00 它的大小为7字节,也就是C015的大小(也即是C010和C011的大小和)加上自身的4字节int变量之和。同样对象的内存输出也验证了这一点,前三个字节为从父类继续的,后4个字节为自身的int变量,值为1。