Re: [問題] 請問toString的觀念
※ 引述《pshuang》之銘言:
> ※ 引述《adrianshum》之銘言:
> > 不是. 我之前看書解釋 Java 和一般 C++ 的做法一樣, 是靠
> > virtual function table lookup function pointer
> > 的做法.
> > 不需要用到 RTTI
> > Alien
> 不是 RTTI的話,
> virtual function table 就要依靠 compiler 幫忙建立吧!
> 那 obj.toString() 是 compiler 時期就決定該呼叫哪一個class的method 嗎?
建議你去看看有關 virtual function table 那些東西的概念吧...
嘗試用抽象一點的方法說一說
當你的 object (叫 A class 吧) 被建立時, 其 vftab 也會被建立.
當中有一個entry 是 "toString" 而該 entry 則指著 A 的 toString
而當一個 Object 的 reference 指著一個實體時, invoke
obj.toString() 時, compiler 並不是把這句譯成 invoke A 的 toString
(因為這是不可能的, 這是 runtime 才能決定的, 不然就沒有了 polymorphism
的用意了), 而實際的動作, 是去到該 object 的 vftab 中, 找出 "toString"
的 entry, 然後 invoke 該entry 所指著的 method.
大概的概念是這樣.
Alien
--
┌─────◆KKCITY◆─────┐ KKBOX◤歌名╱歌手╱歌詞╱專輯◢搜尋
│ bbs.kkcity.com.tw │ ★ http://www.kkbox.com.tw ★
└──《From:218.103.235.175 》──┘ 超過60家唱片公司合法授權 音樂盡情下載
--
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章