1.c++繼承體系中內存布局的padding是保留的,這是為了防止父類和子類互相賦值時出現語義錯誤。
2.同樣由于內部實現的差別,如padding或vptr的存在,慎用memset等內存直接操作方式,c++標準沒有規定內存的布局細節。
3.指向對象成員的指針類型,其值是偏移值,這就產生一個問題,指向第一個成員的偏移值為0,空指針值也為0,必須對這種情況加以區分,實現策略是將指向成員的指針值(偏移)被加1,用以和空指針區分開來,因此使用指向成員的指針值應減1以得到真實的偏移。
X::*p=0 ;
X::*p=&X::first ;