Micsorft文档阅读笔记-Run-Time Type Information解析及使用
生活随笔
收集整理的這篇文章主要介紹了
Micsorft文档阅读笔记-Run-Time Type Information解析及使用
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
官方解析
博主栗子
官方解析
Run-Time Type Information解析
Run-time type information (RTTI)運(yùn)行時(shí)類型信息是一個(gè)運(yùn)行機(jī)制,這個(gè)機(jī)制是在程序執(zhí)行期間要明確一個(gè)對(duì)象的類型。RTTI在C++中被使用的原因是許多類或者框架實(shí)現(xiàn)了很多功能,這就會(huì)造成類庫(kù)間的不兼容。因此,RTTI解決了在語言層面上類庫(kù)兼容問題。
RTTI幾乎都是針對(duì)限制于指針問題。然而,討論的概念也適用于引用。
RTTI在C++中主要的三種情況:
1.dynamic_cast操作符:使用多態(tài)類型的轉(zhuǎn)換;
2.typeid操作符:用于識(shí)別這個(gè)類的具體類型;
3.type_info類:用于保護(hù)typeid這個(gè)操作符返回后的類型信息;
?
博主栗子
源碼一:
#include <iostream> using namespace std;class Base { public:void print() {cout << "Base print() called!\n";} };class Child :public Base { public:void print() {cout << "Child print() called!\n";} };void main() {Child *child = new Child;child->print();Base *base = dynamic_cast<Child*>(child); //or use it in this way//Base *base_2 = child;base->print();getchar(); }運(yùn)行截圖如下:
源碼二:
#include <iostream> #include <typeinfo> using namespace std;class Base { public:void print() {cout << "Base print() called!\n";} };class Child :public Base { public:void print() {cout << "Child print() called!\n";} };void main() {cout << typeid(1).name() << endl;cout << typeid(1.1).name() << endl;cout << typeid(new Base).name() << endl;cout << typeid(*new Base).name() << endl;Child *child = new Child;Base *base = child;cout << typeid(base).name() << endl;cout << typeid(*base).name() << endl;getchar(); }運(yùn)行截圖如下:
補(bǔ)充:typeid是在編譯時(shí)期識(shí)別的,關(guān)于type_info將在以后的博文中給出
總結(jié)
以上是生活随笔為你收集整理的Micsorft文档阅读笔记-Run-Time Type Information解析及使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt工作笔记-QGraphics重设场景
- 下一篇: Qt工作笔记-主界面传输数据到附属界面(