fork(8) download
  1. #include <stdio.h>
  2. //#include <conio.h>
  3.  
  4. class Ana
  5.  
  6. {
  7. int x;
  8.  
  9. public:
  10.  
  11. Ana(int c);
  12.  
  13. Ana( const Ana& ){ printf("\n Ana( const Ana& ) \n"); }
  14.  
  15. ~Ana() {}
  16.  
  17. int ghf() const {return x;}
  18.  
  19. class A
  20. {
  21. public:
  22. A() {printf("\nKONSTRUKTOR A %p\n",this);}
  23. ~A() {printf("\nDESTRUKTOR A %p\n",this);}
  24. A( const A& ){ printf("\n A( const A& ) \n"); }
  25. };
  26.  
  27. class B : public A
  28. {
  29. public:
  30. B() {printf("\nKONSTRUKTOR B %p\n",this);}
  31. ~B() {printf("\nDESTRUKTOR B %p\n",this);}
  32. B( const B& _b):A(_b){ printf("\n B( const B& ) \n"); }
  33. };
  34.  
  35. class C : public B
  36. {
  37. public:
  38. C() {printf("\nKONSTRUKTOR C %p\n",this);}
  39. ~C() {printf("\nDESTRUKTOR C %p\n",this);}
  40. C( const C& _c ):B(_c){ printf("\n C( const C& ) \n"); }
  41. };
  42. };
  43.  
  44. Ana :: Ana(int c) :
  45.  
  46. x(c)
  47.  
  48. {
  49. if(c == 0) throw B();
  50.  
  51. if(c < 0) throw A();
  52.  
  53. if(c > 10) throw C();
  54. }
  55.  
  56. int main()
  57.  
  58. {
  59. try
  60.  
  61. {
  62. Ana s(11);
  63.  
  64. printf("\n-------- %d\n",s.ghf());
  65. }
  66.  
  67.  
  68. catch (Ana :: C)
  69.  
  70. {
  71. printf("\n****** c > 10\n");
  72. }
  73.  
  74. catch (Ana :: B)
  75.  
  76. {
  77. printf("\n****** c == 0\n");
  78. }
  79.  
  80.  
  81. catch (Ana :: A)
  82.  
  83. {
  84. printf("\n****** c < 0\n");
  85. }
  86.  
  87.  
  88. getchar();
  89.  
  90. return 0;
  91. }
  92.  
  93.  
  94.  
Success #stdin #stdout 0s 3280KB
stdin
Standard input is empty
stdout
KONSTRUKTOR A 0x8761068

KONSTRUKTOR B 0x8761068

KONSTRUKTOR C 0x8761068

 A( const A& ) 

 B( const B& ) 

 C( const C& ) 

****** c > 10

DESTRUKTOR C 0xbfdc106c

DESTRUKTOR B 0xbfdc106c

DESTRUKTOR A 0xbfdc106c

DESTRUKTOR C 0x8761068

DESTRUKTOR B 0x8761068

DESTRUKTOR A 0x8761068