11.11.  _______________________________325

class B: public A {
public:

void foo(){ cout  " B"  endl;}

};

int main()
{

try {

A a, *pa; B b, *pb;

pa = &b;

pb = dynamic_cast<B*>(pa);  //
pb -> foo();

pa = &a;

pb = dynamic_cast<B*>(pa);  //
pb -> foot);

}

catch(bad_cast){cout  " "  endl;}
}

 ,     ,    
  ,  ,       .

      
exception.      logic_error ( ) 
runt ime_error (  ).    -
: bad_cast ( ), out_of_range ( )  bad_type id
(  type id () ),     , -
   .     
: range_error ( ), overflow_error () 
bad_alloc ( ).

     :

virtual const char* exception::what() const throw();

 -         
    .   -
  throw ,      .

11.11.  

,        -
   .     -
  .  ,    .  -
       
 ,       -
.      ,  ,  ,
, , ,  ,     -
.     , 
:    ,    .

        . -
     .     -