C++/Class/dynamic cast

Материал из C\C++ эксперт
Перейти к: навигация, поиск

dynamic_cast between base class and derived class

<source lang="cpp">

  1. include <iostream>
  2. include <exception>

using namespace std; class CBase { virtual void dummy() {cout << "base";} }; class CDerived: public CBase { int a; }; int main () {

 try {
   CBase * pba = new CDerived;
   CBase * pbb = new CBase;
   CDerived * pd;
   pd = dynamic_cast<CDerived*>(pba);
   if (pd==0) cout << "Null pointer on first type-cast" << endl;
   pd = dynamic_cast<CDerived*>(pbb);
   if (pd==0) cout << "Null pointer on second type-cast" << endl;
 } catch (exception& e) {cout << "Exception: " << e.what();}
 return 0;

}


 </source>