304                                                    10. 

10.9.     

     (run-time type identification, RTTI)
     ,   
      .   
dynamic_cast       , typeid  
     type_info  ,    -
     .
 dynamic_cast   :

dynamic_cast<T.ra7>( v )

         ,  v   -
    .     , -
  .    :

class Base { virtual void foo(); ... };

class Derived : public Base {  } ;

void fcnfBase* ptr)
{

Derived* dptr = dynamic_cast<Derived*>(ptr);

       ptr   Derived*.
  ,    NULL.  -
   (down-cast).    -
  -.

 typeid ()          
   .      
type_info,        
type_info.h (   typeinfo.h).  type_info 
- name (),   ,   . -
 ,       .  -
         .

  typeid. 

Base* bptr;

//  ,     bptr
cout  typeid(bptr).name()  endl ;

if (typeid(bptr) == typeid(Derived)) {

// -,     Derived
}

       -
 typeid,    bad_cast  bad_typeid.   -
  ,      NULL-   -
 (.  11.10,     ,  . 324).