The size of C000 is 1 The detail of C000 is cc 可以看到它的大小為1字節(jié),這是一個占位符。我們可以看到它的值是0xcc。在debug模式下,這表示是由編譯器插入的調(diào)試代碼所初始化的內(nèi)存。在release模式下可能是個隨機(jī)值,我測試時值為0x00。
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 我們從對象的內(nèi)存輸出中可以看到,它們的值就是我們在構(gòu)造函數(shù)中賦的值,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; 在這個類中我們加入了一個靜態(tài)數(shù)據(jù)成員,一個普通成員函數(shù)和一個靜態(tài)成員函數(shù)。
運(yùn)行如下代碼打印它的大小及對象中的內(nèi)容。
PRINT_SIZE_DETAIL(C012) 結(jié)果為:
The size of C012 is 1 The detail of C012 is cc 可以看到它的大小還是1字節(jié),值為0xcc是因?yàn)槲覀儧]有初始化它,原因前面說過了。
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字節(jié),也就是C011的大小,對象的內(nèi)存值也是在C011的構(gòu)造函數(shù)中初始化的兩個值0x0203。C015的大小為3字節(jié),也就是C010和C011的大小之和,對象的內(nèi)存值為0x010203。
The size of C016 is 7 The detail of C016 is 01 02 03 01 00 00 00 它的大小為7字節(jié),也就是C015的大小(也即是C010和C011的大小和)加上自身的4字節(jié)int變量之和。同樣對象的內(nèi)存輸出也驗(yàn)證了這一點(diǎn),前三個字節(jié)為從父類繼續(xù)的,后4個字節(jié)為自身的int變量,值為1。