#include <stdio.h>
//#include <conio.h>
class Ana
{
int x;
public :
Ana( int c) ;
Ana( const Ana& ) { printf ( "\n Ana( const Ana& ) \n " ) ; }
~Ana( ) { }
int ghf( ) const { return x; }
class A
{
public :
A( ) { printf ( "\n KONSTRUKTOR A %p\n " ,this ) ; }
~A( ) { printf ( "\n DESTRUKTOR A %p\n " ,this ) ; }
A( const A& ) { printf ( "\n A( const A& ) \n " ) ; }
} ;
class B : public A
{
public :
B( ) { printf ( "\n KONSTRUKTOR B %p\n " ,this ) ; }
~B( ) { printf ( "\n DESTRUKTOR B %p\n " ,this ) ; }
B( const B& _b) : A( _b) { printf ( "\n B( const B& ) \n " ) ; }
} ;
class C : public B
{
public :
C( ) { printf ( "\n KONSTRUKTOR C %p\n " ,this ) ; }
~C( ) { printf ( "\n DESTRUKTOR C %p\n " ,this ) ; }
C( const C& _c ) : B( _c) { printf ( "\n C( const C& ) \n " ) ; }
} ;
} ;
Ana :: Ana ( int c) :
x( c)
{
if ( c == 0 ) throw B( ) ;
if ( c < 0 ) throw A( ) ;
if ( c > 10 ) throw C( ) ;
}
int main( )
{
try
{
Ana s( 11 ) ;
printf ( "\n -------- %d\n " ,s.ghf ( ) ) ;
}
catch ( Ana :: C )
{
printf ( "\n ****** c > 10\n " ) ;
}
catch ( Ana :: B )
{
printf ( "\n ****** c == 0\n " ) ;
}
catch ( Ana :: A )
{
printf ( "\n ****** c < 0\n " ) ;
}
getchar ( ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Ci8vI2luY2x1ZGUgPGNvbmlvLmg+CiAKY2xhc3MgQW5hCiAKewogICAgaW50IHg7CiAKcHVibGljOgogCiAgICBBbmEoaW50IGMpOyAKIAogICAgQW5hKCBjb25zdCBBbmEmICl7IHByaW50ZigiXG4gQW5hKCBjb25zdCBBbmEmICkgXG4iKTsgfQogCiAgICB+QW5hKCkge30KICAgIAogICAgaW50IGdoZigpIGNvbnN0IHtyZXR1cm4geDt9CiAKICAgIGNsYXNzIEEgCiAgICB7IAogICAgcHVibGljOiAKICAgICAgICBBKCkge3ByaW50ZigiXG5LT05TVFJVS1RPUiBBICVwXG4iLHRoaXMpO30KICAgICAgICB+QSgpIHtwcmludGYoIlxuREVTVFJVS1RPUiBBICVwXG4iLHRoaXMpO30KCSAgICBBKCBjb25zdCBBJiApeyBwcmludGYoIlxuIEEoIGNvbnN0IEEmICkgXG4iKTsgfQogICAgfTsKIAogICAgY2xhc3MgQiA6IHB1YmxpYyBBIAogICAgewogICAgcHVibGljOiAKICAgICAgICBCKCkge3ByaW50ZigiXG5LT05TVFJVS1RPUiBCICVwXG4iLHRoaXMpO30KICAgICAgICB+QigpIHtwcmludGYoIlxuREVTVFJVS1RPUiBCICVwXG4iLHRoaXMpO30KCSAgICBCKCBjb25zdCBCJiBfYik6QShfYil7IHByaW50ZigiXG4gQiggY29uc3QgQiYgKSBcbiIpOyB9CiAgICB9OwogCiAgICBjbGFzcyBDIDogcHVibGljIEIgCiAgICB7CiAgICBwdWJsaWM6IAogICAgICAgIEMoKSB7cHJpbnRmKCJcbktPTlNUUlVLVE9SIEMgJXBcbiIsdGhpcyk7fQogICAgICAgIH5DKCkge3ByaW50ZigiXG5ERVNUUlVLVE9SIEMgJXBcbiIsdGhpcyk7fQoJICAgIEMoIGNvbnN0IEMmIF9jICk6QihfYyl7IHByaW50ZigiXG4gQyggY29uc3QgQyYgKSBcbiIpOyB9CiAgICB9Owp9OwogCkFuYSA6OiBBbmEoaW50IGMpIDoKIAp4KGMpCiAKewogICAgaWYoYyA9PSAwKSB0aHJvdyBCKCk7CiAKICAgIGlmKGMgPCAwKSB0aHJvdyBBKCk7CiAKICAgIGlmKGMgPiAxMCkgdGhyb3cgQygpOwp9CiAKaW50IG1haW4oKQogCnsKICAgIHRyeQogCiAgICB7CiAgICAgICAgQW5hIHMoMTEpOwogCiAgICAgICAgcHJpbnRmKCJcbi0tLS0tLS0tICVkXG4iLHMuZ2hmKCkpOwogICAgfQogCiAKICAgIGNhdGNoIChBbmEgOjogQykKIAogICAgewogICAgICAgIHByaW50ZigiXG4qKioqKiogYyA+IDEwXG4iKTsKICAgIH0KIAogICAgY2F0Y2ggKEFuYSA6OiBCKQogCiAgICB7CiAgICAgICAgcHJpbnRmKCJcbioqKioqKiBjID09IDBcbiIpOwogICAgfQogCiAKICAgIGNhdGNoIChBbmEgOjogQSkKIAogICAgewogICAgICAgIHByaW50ZigiXG4qKioqKiogYyA8IDBcbiIpOwogICAgfQogICAgICAgIAogCiAgICAgICAgZ2V0Y2hhcigpOwogCiAgICAgICAgcmV0dXJuIDA7Cn0gCiAKCg==