⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 typeinfo.cpp

📁 《C++ Builder 5技术内幕》一书附带的程序源代码
💻 CPP
字号:
#include <iostream.h>
#include <typeinfo.h>
#include <conio.h>

#pragma hdrstop
#include <condefs.h>


//---------------------------------------------------------------------------
#pragma argsused
/*class A { };
class B : A { };

int main(int argc, char **argv)
{
  char C, ch;
  float X;
  // USE THE type_info::operator==()TO MAKE COMPARISON
  if (typeid( C ) == typeid( X ))
     cout << "C and X are the same type." << endl;
  else cout << "C and X are NOT the same type." << endl;
  // USE true AND false LITERALS TO MAKE COMPARISON
  cout << typeid(int).name();
  cout << " before " << typeid(double).name() << ": " <<
       (typeid(int).before(typeid(double)) ? true : false) << endl;
  cout << typeid(double).name();
  cout << " before " << typeid(int).name() << ": " <<
       (typeid(double).before(typeid(int)) ? true : false) << endl;
  cout << typeid(A).name();
  cout << " before " << typeid(B).name() << ": " <<
       (typeid(A).before(typeid(B)) ? true : false) << endl;
  while( ch = getch() != 'x' ) ;
  return 0;
}
*/
class A               
{
  public:
    virtual void f() { }
};

class B { };

class C : public A, public B { };

int main(int argc, char **argv)
{
  char ch;
  A *pa = new C;
  C *pc = dynamic_cast< C * >( pa );
  if( pc )
  {
    cout << "The pc's name is " << typeid( *pc ).name() << endl;
  }
  B *pb = dynamic_cast< B * >( pa );
  if( pb )
  {
    cout << "The pb's name is " << typeid( *pb ).name() << endl;
  }
  delete pa;
  while( ch = getch() != 'x' ) ;
  return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -