RTTI是什麼呀?和MFC內部機制有什麼關系,請簡要用易懂的語言說說。我新手。
詳細去看《深入淺出MFC》(網上有電子版,專門有一章講RTTI)
簡單說下,RTTI就是運行時刻類型識別,它和DC&DI(動態創建)組合在一起,目的是為了讓程序在運行的時候(而不是編譯的時候)可以使用編譯的時候不知道類型的代碼。
一個典型的例子就是插件。我們知道,一個程序可以允許第三方編寫插件程序,主程序調用。但是插件的代碼是在主程序已經編寫完成後追加上去的。顯然不能在源代碼中鏈接或者包含的方法去調用。那就需要RTTI/DC/DI。
在現代的編程語言,比如Java、C#中,這些功能靠反射實現,編譯器在編譯代碼的同時,會將類型、方法原形等元數據也寫入程序中。但是C++是一種落後且野蠻的語言,它在語法層面不支持反射。所以微軟通過一些技巧,用宏和晦澀的代碼模擬了這個過程,這些代碼也是MFC的一部分。MFC中這種彌補語言缺陷的技巧有很多,比如消息映射宏、異常處理、序列化等等。