C++

  1. RTTI是什么、
    1. 运行时类型识别、使程序能够使用基类的指针或引用来检查指针或者引用所指的对象的实际派生类型、
    2. 通过dynamic_cast运算符可以将基类(父类)指针或引用安全转换成派生类(子类)指针或引用、
    3. typeid运算符、可以返回指针和引用所指向对象的实际类型、
    4. ==基类中必须要有虚函数、这是RTTI(dynamin_cast运算符和typeid运算符)起作用的前提
  2. dynamic_cast运算符、
    1. dynamic_cast<希望转成的目标类型>(要转的指针对象);
    2. 如果引用转换失败会有std::bad_cast异常、扑捉异常 try{正常代码} catch(要扑捉的异常){异常}:
    3. 类似与if else 先执行代码、然后catch开始扑捉代码异常、没有代码异常、正常执行、如果有代码异常、则执行{}里面的代码、catch后面的{} 大括号就像是兜底的作用
  3. typeid运算符、
    1. typeid(类型或者表达式)、
    2. 返回的是常量对象的引用、即type_info
    3. cout<<tyoeud()<<endl;
    4. 主要用于比较两个指针是否指向同一类型对象、
  4. type_info类、
    1. 标准库、是一个类、
  5. RTTI与虚函数表、
    1. 类中含有虚函数、编译器就会对该类产生虚函数表、虚函数表是针对类而言、而虚函数中的每一项便是一个指针、指向虚函数的入口地址、
    2. 虚函数表的第一个表指向的是类所关联的type_info对象、
posted on 2020-10-16 12:07  程耀辉  阅读(124)  评论(0编辑  收藏  举报