1:RTTI是在只有一个指向基类的指针或引用时所确定的一个对象的类型
RTTI可以在程序运行时通过某一个对象的只恨确定该对象的类型,方便面向对象编程
测试代码如下
#include"stdafx.h" #include"typeinfo.h" #include"iostream.h" class CB { virtual void dowork() {}; }; class CD1 :virtual public CB { }; class CD2 :virtual CB{ }; class CD3 :public CD1, public CD2 { public: //char* print(){ return "hello "; }; }; int main(int argc, char* argv[]) { //CB* p = new CD3(); //cout << typeid(*p).name() << endl; //CD3* pd3 = dynamic_cast<CD3*>(p); //if (pd3) //cout << pd3->print() << endl; }
2:异常处理
异常处理是程序设计中除调试之外的另一种错误处理方法 可以出错时不中断程序的执行
由try{ } catch{ }关键字来定义
try里面一般是抛出异常 catch里面一般是异常 处理
测试代码如下
#include<typeinfo> #include<iostream> using namespace std; class cexcept1{}; class cexcept2 { public: cexcept2(cexcept1&e){} }; int main(int argc, char* argv[]) { try { throw cexcept1(); } catch (cexcept2) { cout << "进入except2异常 处理器" << endl; } catch (cexcept1){ cout << "进入except1异常处理器" << endl; } }