作者LPH66 (IWH68S0XZ8M89)
看板Programming
標題Re: C++ overriding/overriding的問題
時間Wed Feb 13 22:32:32 2008
※ 引述《legnaleurc (CA)》之銘言:
: ※ 引述《ya790206 (殘雲奪月)》之銘言:
: 恕刪
: : 結果是4 8
: : 為何是八之前有人問過,不過我不懂
: : DevC++的結果
: 我認為它的sizeof的計算方式很有趣
: 我把B改成虛擬繼承A,印出來就變成4 12
: 然後如果A的x是static int
: 印出來會變成1 1
: 不知道是怎麼算的
我沒搞錯的話
虛擬繼承會多出virtual table的空間
所以B多出了virtual table的4 byte
至於那個8是因為alignment的問題 請往前查
如果A的x是static的話 A就沒有member variable了
所以A變成一個"空"物件
好像最近C_and_CPP版還是這裡有篇文有說這時似乎是規定它的sizeof是1的樣子(不確定)
B則是比(空的)A多一個char 所以就是那個char的1
--
実琴:「
河野!你真的就這樣被
物質慾望給吸引過去了嗎?!」
亨:「只要
穿著女裝擺出親切的樣子,所有必要花費就能
全免,似乎一點都不壞啊。」
実琴:「難道你沒有
男人的尊嚴了嗎?!」
亨:(斷然道)「
沒有。在
節衣縮食且
生活吃緊的
學生面前,
沒有那種東西。」
--プリンセス・プリンセス 第二話
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.84.44.21
推 yzugsr:我記得inside C++ object裡有這個議題 123.193.35.97 02/13 23:56
→ yzugsr:可是詳情我沒記起來 有興趣可以找書看 123.193.35.97 02/13 23:57