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