zoukankan      html  css  js  c++  java
  • RTTI

    RTTI(Run-Time Type Identification),通过运行时类型信息程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型。

    RTTI介绍

    RTTI提供了以下两个非常有用的操作符:

    (1)typeid操作符,返回指针和引用所指的实际类型。

    (2)dynamic_cast操作符,将基类类型的指针或引用安全地转换为派生类型的指针或引用。

    //面试,RTTI实时类型检测

    //主要依赖typeid, dynamic_cast

    //类型不匹配转失败,返回为空,保证类型安全

     1 #include <iostream>
     2 
     3 //面试,RTTI实时类型检测
     4 //主要依赖typeid, dynamic_cast
     5 //类型不匹配转失败,返回为空,保证类型安全
     6 
     7 class A
     8 {
     9 public:
    10     int num;
    11     static int data;
    12     virtual void run()//虚函数
    13     {
    14         std::cout << "Arun" << std::endl;
    15     }
    16 };
    17 
    18 class B :public A
    19 {
    20 public:
    21     int num;
    22     static int data;
    23     virtual void run()//虚函数
    24     {
    25         std::cout << "Brun" << std::endl;
    26     }
    27     void test()
    28     {
    29         std::cout << "Btest" << std::endl;
    30     }
    31 };
    32 
    33 int A::data = 1;
    34 int B::data = 2;
    35 
    36 void main()
    37 {
    38     A a1;
    39     B b1;
    40 
    41     A *p1 = &a1;//直接用基类指针引用基类对象
    42     A *p2 = &b1;//用基类指针引用一个派生类对象
    43     B *p3(nullptr);//派生类指针,为空
    44 
    45     p3 = static_cast<B *>(p1);
    46 
    47     p3->test();
    48     
    49     system("pause");
    50 }
  • 相关阅读:
    大道至简阅读笔记08-完结
    (转)MySQL的JDBC驱动源码解析
    Win7如何开启Telnet服务
    idea 设置jetty进程jvm参数
    (转)如何在maven环境中设置JVM参数
    (转)IntelliJ Idea 常用快捷键列表 for win
    cglib Demo
    MAVEN 配置阿里巴巴镜像
    MyBatis入门基础(一)
    JAVA常见面试题之Forward和Redirect的区别
  • 原文地址:https://www.cnblogs.com/denggelin/p/5673927.html
Copyright © 2011-2022 走看看