定義一個空的類型沟绪,里面沒有任何成員變量和函數(shù)刮便,對該類型求sizeof,得到的結(jié)果是绽慈?
答:1
為什么不是0恨旱?
答:聲明該類型的實例的時候,必須在內(nèi)存中占有一定的空間坝疼,否則無法使用實例搜贤。占多少內(nèi)存,由編譯器決定钝凶。VS中每個空類型的實例占用1字節(jié)仪芒。
如果在該類型中添加一個構(gòu)造函數(shù)喝析構(gòu)函數(shù),再求sizeof腿椎,得到的結(jié)果是桌硫?
答:還是1.因為調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)只需要知道函數(shù)的地址夭咬,地址只與類型有關(guān)啃炸,與實例無關(guān),編譯器不會為構(gòu)造函數(shù)和析構(gòu)函數(shù)添加任何額外的信息卓舵。
如果把析構(gòu)函數(shù)改為虛函數(shù)呢南用?
答:編譯器會為虛函數(shù)生成虛函數(shù)表,并在該類型的每個實例中添加一個指向虛函數(shù)表的指針。32位的機器裹虫,一個指針占4字節(jié)肿嘲,sizeof結(jié)果為4;64位機器筑公,一個指針占8字節(jié)雳窟,sizeof結(jié)果為8.