類似代碼:
typedef struct sD
{
}S_D;
int size_d = sizeof(S_D);
那麼size_d=?
如果這是一段C++代碼,那麼這裡結果是1;看上去編譯器為這樣沒有成員的結構體隱形定義了一個一字節(char)的成員,目的是為了能用來標識類實例之間的不同。
這裡可以這樣理解,如果沒有這一個字節,那麼所有結構體的實例都是空,也就不占內存,那麼他們的實例是沒有區別的,因此C++的編譯器不允許這麼做,從而隱式增加了一個字節。
另外對於class也是同樣的(因此C++中struct和class關鍵字基本沒有區別)。