本隨筆緊接上個隨筆:空結構體(類對于C++)的大小
http://www.shnenglu.com/windcsn/archive/2011/04/13/144162.html這里試圖討論為什么C++的結構體或類即使沒有成員也需要一個字節的大小?
首先需要一個字節的作用在上個隨筆中已經說明,是為了在生成實例的時候確定區別;但實際上在C里面是不支持空成員的結構體,直接報編譯錯誤。
因此這是C++特有的特性,可能有如下的原因:
1.C++里面必須支持沒有成員的類,比如純虛類;這些類只有方法,沒有數據成員(雖然會有虛表);但這些類不會被實例化。
2.為了達到統一,非純虛類的C++結構體和類也會被C++支持,但他們需要實例化,所以需要提供一個字節來可以給他們分配內存。
而C里面是不支持沒有成員的結構體(VC里面是編譯不過的),其實完全沒有必要支持這種無意義的定義,從而更簡單。
歡迎討論。