==> 在 "Knight" <knight@handel.mba.ntu.edu.tw> 的文章中提到:
> class base {};
> class derived : public base {};
[deleted]
> 根據help的說法,應該 t2 的 name() 是 derived 才對啊!
> 結果兩者分別為:
> class base *
> class base
> 偵測不出執行時期的型別,RTTI還有什麼用勒?
The C++ Programming Language 3/e 第 15.4 節有言:
C++ 的 RTTI 機制(尤其是 dynamic_cast、typeid)要正常運作,
運算元就必須是個 polymorphic type(多型型別)。
所以, 只要你把上面的程式小改一個地方:
class base { virtual void f() {} }; // 讓它變成多型型別
就能得到你想要的效果了。
--
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
≡ 何陋居 ≡ 雋永難忘的事總落在願聽任其發生的人身上。
Jeffrey A. Kottler, 《旅行,重新打造自己》
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>