¿¬»êÀÚ ÇÔ¼ö

±âº»ÇüÀÇ ¿¬»êÀÚ

 

¿¬ÀÚÀÚ¸¦ ¿À¹ö·ÎµùÇÒ ¼ö ÀÖ´Ù´Â °ÍÀº C++¾ð¾îÀÇ Å« Ư¡À̸ç Ŭ·¡½º°¡ ŸÀÔÀÓÀ» º¸¿©ÁÖ´Â ´ÜÀûÀÎ ¿¹.

±âº»ÇüÀÇ ¿¬»ê¹® Áß ´ëÇ¥ÀûÀ¸·Î µ¡¼À ¿¬»ê¹®À» º¸¸é ´ÙÀ½°ú °°Àº ±¸¹®ÀÌ °¡´ÉÇÏ´Ù.

 

int i1=1,i2=2;

double d1=3.3,d2=4.4;

 

int i=i1+i2;               // Á¤¼ö µ¡¼À

double d=d1+d2;      // ½Ç¼ö µ¡¼À

 

¿¬»ê °á°ú i´Â 3ÀÌ µÇ°í d´Â 7.7ÀÌ µÉ °ÍÀÌ´Ù. µ¡¼À ¿¬»êÀÚÀÎ +´Â ÇÇ¿¬»êÀÚÀÇ Å¸ÀÔÀÌ ´Þ¶óµµ ¹®Á¦¾øÀÌ Á¤È®ÇÏ°Ô ¿¬»êÀ» ÇØ ³½´Ù. ÀÌ ¿¬»êÀÌ ¼º¸³ÇÏ´Â ÀÌÀ¯µµ ¾Ë°íº¸¸é ³ª¸§´ë·Î º¹ÀâÇÏ´Ù. Á¤¼öÇü°ú ½Ç¼öÇüÀº ±æÀ̵µ ´Ù¸£°í ºñÆ® ±¸Á¶µµ »óÀÌÇØ¼­ °¢ ŸÀÔÀ» ´õÇÏ´Â ¾Ë°í¸®ÁòÀÌ ºÐ¸íÈ÷ ´Ù¸£°ÚÁö¸¸ ¶È°°Àº ¿¬»êÀÚ·Î µÎ ŸÀÔÀÇ µ¡¼ÀÀÌ °¡´ÉÇÑ °ÍÀÌ´Ù.

ÀÌ·¸°Ô µÇ´Â ÀÌÀ¯´Â µ¡¼À ¿¬»êÀÚ°¡ ÇÇ¿¬»êÀÚÀÇ Å¸ÀÔ¿¡ µû¶ó ¿À¹ö·ÎµùµÇ¾î Àֱ⠶§¹®ÀÌ´Ù. Áï, Á¤¼ö µ¡¼ÀÀ» ÇÏ´Â ÄÚµå¿Í ½Ç¼ö µ¡¼ÀÀ» ÇÏ´Â Äڵ尡 °¢°¢ µû·Î ÀÛ¼ºµÇ¾î ÀÖÀ¸¸ç ÄÄÆÄÀÏ·¯´Â µ¡¼À ¿¬»êÀÚÀÇ ¾çº¯¿¡ ÀÖ´Â ÇÇ¿¬»êÀÚÀÇ Å¸ÀÔÀ» Á¡°ËÇÑ ÈÄ µÑ ´Ù Á¤¼öÀÏ °æ¿ì Á¤¼ö³¢¸® ´õÇÏ´Â Äڵ带 È£ÃâÇÏ°í µÑ ´Ù ½Ç¼öÀÏ °æ¿ì ½Ç¼ö³¢¸® ´õÇÏ´Â Äڵ带 È£ÃâÇÑ´Ù. Á¤¼öÀÇ °æ¿ì ºÎÈ£°¡ °°À¸¸é Àý´ë°ªÀ» ´õÇÏ°í ºÎÈ£°¡ ´Ù¸£¸é Àý´ë°ª³¢¸® »©°í ºÎÈ£´Â Å« ÂÊÀ» µû¸¦ °ÍÀÌ¸ç ½Ç¼öÀÇ °æ¿ì Áö¼ö¸¦ ÀÏÄ¡½ÃŲ ÈÄ µ¡¼ÀÀ» ÇÒ °ÍÀÌ´Ù. ÀμöÀÇ Å¸ÀÔÀÌ ´Ù¸£¸é °°Àº À̸§À¸·Î ÇÔ¼ö¸¦ Áߺ¹ Á¤ÀÇÇÒ ¼ö ÀÖ´Â °Íó·³ ¿¬»êÀÚµµ ÇÇ¿¬»êÀÚÀÇ Å¸ÀÔ¿¡ µû¶ó Áߺ¹ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. + ±âÈ£¸¦ µ¡¼ÀÀ» ÇÏ´Â ÇÔ¼öÀÇ À̸§À̶ó°í ÇßÀ» ¶§ ÀÌ ÇÔ¼öÀÇ ¿øÇüÀº ¾Æ¸¶µµ ´ÙÀ½°ú °°ÀÌ ¿À¹ö·ÎµùµÇ¾î ÀÖÀ» °ÍÀÌ´Ù.

 

int +(int, int);

double +(double, double);

 

À§ÂÊ ÇÔ¼ö´Â Á¤¼ö³¢¸® ´õÇÑ ÈÄ Á¤¼ö¸¦ ¸®ÅÏÇÏ°í ¾Æ·¡ÂÊ ÇÔ¼ö´Â ½Ç¼ö³¢¸® ´õÇÑ ÈÄ ½Ç¼ö¸¦ ¸®ÅÏÇÑ´Ù. i1+d1°°ÀÌ Á¤¼ö¿Í ½Ç¼ö¸¦ ¼¯¾î¼­ ´õÇÒ °æ¿ì´Â ÄÄÆÄÀÏ·¯ÀÇ Çüº¯È¯ ±â´É¿¡ ÀÇÇØ i1ÀÌ ½Ç¼ö·Î »ó½Â º¯È¯µÈ ÈÄ ½Ç¼ö³¢¸® µ¡¼ÀÀ» ÇÏ°Ô µÉ °ÍÀÌ´Ù. ¶Ç Æ÷ÀÎÅÍ¿Í Á¤¼öÀÇ µ¡¼Àµµ »ê¼úÀûÀÎ µ¡¼À°ú ´Ù¸£°Ô Á¤ÀǵǾî Àִµ¥ ÀÌ ¿¬»êµµ ÀÏÁ¾ÀÇ ¿À¹ö·ÎµùµÈ ¿¹¶ó°í ÇÒ ¼ö ÀÖ´Ù.

 

±×·¯³ª ¿¬»êÀÚÀÇ ÀÌ·± Áߺ¹ Á¤ÀÇ´Â ¾îµð±îÁö³ª ÄÄÆÄÀÏ·¯°¡ ±âº»ÀûÀ¸·Î Á¦°øÇϴ ŸÀÔ¿¡ ´ëÇØ¼­¸¸ Àû¿ëµÇ¸ç »ç¿ëÀÚ°¡ Á÷Á¢ Á¤ÀÇÇϴ ŸÀÔÀΠŬ·¡½º¿¡ ´ëÇØ¼­´Â ÀÌ·± ±ÔÄ¢ÀÌ Àû¿ëµÇÁö ¾Ê´Â´Ù. ´ÙÀ½ ¿¹Á¦´Â º¹¼Ò¼ö¸¦ Ç¥ÇöÇÏ´Â Complex Ŭ·¡½ºÀÇ °´Ã¼³¢¸® + ¿¬»êÀÚ·Î ´õÇÑ´Ù.

 

 #include <Turboc.h>

 

class Complex

{

private:

     double real;

     double image;

 

public:

     Complex() { }

     Complex(double r, double i) : real(r), image(i) { }

     void OutComplex() const { printf("%.2f+%.2fi\n",real,image); }

};

 

void main()

{

     Complex C1(1.1,2.2);

     Complex C2(3.3,4.4);

     C1.OutComplex();

     C2.OutComplex();

 

     Complex C3;

     C3=C1+C2;

     C3.OutComplex();

}

 

ÀÌ »óÅ·ΠÄÄÆÄÀÏÇØ º¸¸é C3=C1+C2; ¿¬»ê¹®¿¡¼­ "Complex Ŭ·¡½º´Â + ¿¬»êÀ» Á¤ÀÇÇÏÁö ¾Ê¾Ò´Ù"´Â ¿¡·¯°¡ ¹ß»ýÇÑ´Ù. »ç¿ëÀÚ Á¤ÀÇ Å¸ÀÔÀΠŬ·¡½ºÀÇ °´Ã¼³¢¸® ´õÇÏ´Â ¹æ¹ýÀº Ŭ·¡½ºº°·Î °íÀ¯Çϱ⠶§¹®¿¡ Ŭ·¡½º¸¦ ¸¸µç »ç¶÷ÀÌ µ¡¼À ¿¬»êÀ» Á÷Á¢ Á¤ÀÇÇÒ Çʿ䰡 ÀÖ´Ù.

C3=C1+C2; ¿¬»ê¹®ÀÌ Á¦´ë·Î ÄÄÆÄÀϵǷÁ¸é º¹¼Ò¼ö¿¡ ´ëÇÑ µ¡¼À ¿¬»êÀÚ¸¦ Áߺ¹ Á¤ÀÇÇØ¾ß ÇÑ´Ù. º¹¼Ò¼ö³¢¸® ´õÇÒ ¶§ ½Ç¼öºÎ´Â ½Ç¼öºÎ³¢¸® Çã¼öºÎ´Â Çã¼öºÎ³¢¸® ´õÇÑ´Ù

°³¹ßÀÚ°¡ ÄÄÆÄÀÏ·¯¿¡°Ô º¹¼Ò¼ö³¢¸® ´õÇÏ´Â ¹æ¹ýÀ» ¾Ë·Á Áà¾ß Çϴµ¥ À̰ÍÀ» ¿¬»êÀÚ ¿À¹ö·ÎµùÀ̶ó°í ÇÑ´Ù. »õ·Î ¸¸µé¾îÁö´Â + ¿¬»êÀÚ´Â ¾Æ¸¶µµ ´ÙÀ½°ú °°Àº ¿øÇüÀ» °¡Áú °ÍÀÌ´Ù.

 

Complex +(Complex, Complex);

 

µÎ °³ÀÇ Complex °´Ã¼¸¦ Àμö·Î ÃëÇÏ°í ±× ÇÕÀ» ±¸ÇØ ComplexÇüÀ¸·Î ¸®ÅÏÇÑ´Ù. Á¤¼ö³¢¸® ´õÇÒ ¶§³ª ½Ç¼ö³¢¸® ´õÇÒ ¶§ »ç¿ëÇÏ´Â ¶È°°Àº + ¿¬»êÀÚ·Î º¹¼Ò¼ö³¢¸®µµ µ¡¼ÀÀ» ÇÒ ¼ö ÀÖµµ·Ï Áߺ¹ Á¤ÀÇÇÏ´Â °ÍÀÌ ¹Ù·Î ¿¬»êÀÚ ¿À¹ö·ÎµùÀÌ´Ù. °íÁ¤µÈ ŸÀÔ¸¸ Á¦°øµÇ´Â C¿¡¼­´Â ÀÌ·± ±â´ÉÀÌ ±×´ÙÁö ÇÊ¿äÇÏÁö ¾Ê¾Ò¾ú´Ù. ±×·¯³ª C++Àº »ç¿ëÀÚ°¡ ŸÀÔÀ» Á¤ÀÇÇÒ ¼ö ÀÖ°Ô µÇ¾ú°í »ç¿ëÀÚ°¡ ¸¸µç ŸÀÔµµ ±âº» ŸÀÔ°ú ¶È°°Àº ÀÚ°ÝÀ» ÁÖ±â À§ÇØ ¿¬»ê ¹æ¹ýÀ» Á¤ÀÇÇÒ Çʿ䰡 »ý°å´Ù. ±×·¡¾ß »ç¿ëÀÚ°¡ Á¤ÀÇÇÑ Å¸ÀÔÀÌ ÄÄÆÄÀÏ·¯°¡ Á¦°øÇÏ´Â ±âº» ŸÀÔ°ú ´ëµîÇÑ ÀÚ°ÝÀ» °¡Áö¸ç ÀϰüµÈ ¹æ¹ýÀ¸·Î »ç¿ëÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.

 

Ŭ·¡½º°¡ ¿ÏÀüÇÑ Å¸ÀÔÀÌ µÇ·Á¸é int°¡ ÇÒ ¼ö ÀÖ´Â ¸ðµç ÀÏÀ» ÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ ÀýÀÇ ÁÖÁ¦°¡ ¹Ù·Î °´Ã¼ÀÇ ¿¬»ê ¹æ¹ýÀ» Á¤ÀÇÇÏ´Â °ÍÀÌ¸ç ´õ Á÷°üÀûÀ¸·Î ¾ê±â ÇÏÀÚ¸é ÀÓÀÇÀÇ °´Ã¼¿¡ ´ëÇØ A=B+C; °¡ °¡´ÉÇϵµ·Ï ÇÏ´Â °ÍÀÌ´Ù. ¹°·Ð + »Ó¸¸ ¾Æ´Ï¶ó *³ª ==, % µî ´ëºÎºÐÀÇ ¿¬»êÀÚµµ ¿À¹ö·ÎµùÇÒ ¼ö ÀÖ´Ù. °³³äÀº ¹«Ã´À̳ª °£´ÜÇÏÁö¸¸ º¹ÀâÇÑ ±ÔÄ¢ÀÌ Á¸ÀçÇÏ¸ç ¶ÇÇÑ ¸¹Àº ÇÔÁ¤µéÀÌ µµ»ç¸®°í ÀÖ´Ù.

 

¿¬»êÀÚ ÇÔ¼ö

½Ã°£À» Ç¥ÇöÇÏ´Â TimeÀ̶ó´Â Ŭ·¡½º¸¦ Á¤ÀÇÇß´Ù¸é ½Ã°£³¢¸® ´õÇÒ ¼ö ÀÖ´Â ¹æ¹ýµµ Á¦°øÇÒ Çʿ䰡 Àִµ¥ ½Ã°£À̶õ °ú¿¬ ¾î¶»°Ô ´õÇÒ ¼ö ÀÖÀ»±î? ½Ã°£À̶ó´Â ŸÀÔÀº ½Ã, ºÐ, ÃÊÀÇ ¼¼ °¡Áö ¿ä¼Ò·Î ±¸¼ºµÇ¸ç Àû¾îµµ int³ª double °°Àº ±âº» ŸÀÔº¸´Ù´Â ÈξÀ ´õ º¹ÀâÇÑ Ã³¸®°¡ ÇÊ¿äÇÏ´Ù. ÃÊ´Â Ãʳ¢¸® ´õÇÏ°í ºÐÀº ºÐ³¢¸® ´õÇØ¾ß ÇÏ¸ç ½Ã´Â ½Ã³¢¸® °¢°¢ ´õÇ쵂 °¢ ÀÚ¸®¿¡¼­ 60ÀÌ ³Ñ´Â °á°ú°¡ ³ª¿À¸é ÀÚ¸® ¿Ã¸² 󸮸¦ ÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î 1:26:42Ãʶó´Â ½Ã°£°ú 2:38:55Ãʶó´Â ½Ã°£À» ´õÇϸé 3:64:97Ãʰ¡ µÇ´Â °ÍÀÌ ¾Æ´Ï¶ó 4:5:37Ãʰ¡ µÇ¾î¾ß ÇÑ´Ù.

 

 #include <Turboc.h>

 

class Time

{

private:

     int hour,min,sec;

 

public:

     Time() { }

     Time(int h, int m, int s) { hour=h; min=m; sec=s; }

     void OutTime() {

          printf("%d:%d:%d\n",hour,min,sec);

     }

     const Time AddTime(const Time &T) const {

          Time R;

         

          R.sec=sec + T.sec;

          R.min=min + T.min;

          R.hour=hour + T.hour;

         

          R.min += R.sec/60;

          R.sec %= 60;

          R.hour += R.min/60;

          R.min %= 60;

          return R;

     }

};

 

void main()

{

     Time A(1,1,1);

     Time B(2,2,2);

     Time C;

    

     A.OutTime();

     B.OutTime();

     C=A.AddTime(B);

     C.OutTime();

}

 

1:36:42¿Í 5:42:29 ½Ã°£³¢¸® ´õÇØµµ ÀÚ¸® ¿Ã¸²±îÁö °í·ÁÇÏ¿© 7:19:11¶ó´Â Á¤È®ÇÑ ¿¬»êÀ» ÇÑ´Ù. Time Ŭ·¡½º°¡ ½Ã°£ Æ÷¸Ë¿¡ ´ëÇØ ĸ½¶È­¸¦ Àß Çϰí ÀÖÀ¸¸ç AddTimeÀ̶ó´Â À̸§ÀÇ ¸â¹ö ÇÔ¼ö¸¦ Á¤ÀÇÇÔÀ¸·Î½á ½Ã°£ °´Ã¼³¢¸® ´õÇÏ´Â ¹æ¹ýÀ» ÄÄÆÄÀÏ·¯¿¡°Ô ¾Ë·Á ÁÖ¾úÀ¸¹Ç·Î main¿¡¼­´Â AddTime ÇÔ¼ö¸¦ È£ÃâÇÏ¿© A¿Í B¸¦ ´õÇϱ⸸ ÇÏ¸é µÈ´Ù. µ¿ÀÛ»óÀÇ ¹®Á¦´Â ÀüÇô ¾øÁö¸¸ ¿¬»êÀ» À§ÇØ ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ¹æ½ÄÀÌ ¿¬»êÀÚ¸¦ ¾²´Â ¹æ¹ý¿¡ ºñÇØ Á÷°üÀûÀÌÁö ¸øÇÏ¸ç ±âº»ÇüÀÇ ¿¬»ê¹®°ú ¸ð¾çÀÌ ´Ù¸£´Ù´Â °Íµµ ºÒ¸¸ÀÌ´Ù. ±×·¡¼­ ÀÌ·± µ¿ÀÛÀ» ÇÏ´Â ¿¬»êÀÚ ÇÔ¼ö¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù.

»ç½Ç ¿¬»êÀÚ´Â ¸ð¾çÀÌ Á» ƯÀÌÇÑ ÇÔ¼ö¶ó°í º¼ ¼ö Àִµ¥ Àμö¸¦ ÃëÇÑ´Ù´Â °Í°ú ¿¬»ê °á°ú¸¦ ¸®ÅÏÇÑ´Ù´Â Á¡¿¡¼­ ÇÔ¼ö¿Í °øÅëÀûÀÌ´Ù. ¿¬»êÀÚ ÇÔ¼öÀÇ À̸§Àº Ű¿öµå operator ´ÙÀ½¿¡ ¿¬»êÀÚ ±âÈ£¸¦ ½á¼­ ÀÛ¼ºÇϴµ¥ ¿¬»êÀÚ ±âÈ£¸¦ ¸íĪÀ¸·Î ¾µ ¼ö ¾øÀ¸¹Ç·Î operator¶ó´Â Ű¿öµå¸¦ ¾Õ¿¡ µÎ´Â °ÍÀÌ´Ù. µ¡¼À ¿¬»êÀÚ ÇÔ¼öÀÇ À̸§Àº operator +°¡ µÇ´Âµ¥ Áß°£ÀÇ °ø¹éÀº ¹«½ÃµÇ¹Ç·Î operator+¶ó°í ºÙ¿© ½áµµ »ó°ü¾ø´Ù. ÇÔ¼ö¸íÀº ¸íĪÀ̹ǷΠ¿µ¹®ÀÚ, ¼ýÀÚ, _¸¸ ¾µ ¼ö ÀÖÁö¸¸ ¿¬»êÀÚ ÇÔ¼öÀÇ À̸§Àº ¿¹¿ÜÀûÀ¸·Î ±âÈ£¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¬»êÀÚ ÀÚü°¡ ±âÈ£·Î µÇ¾î ÀÖÀ¸¹Ç·Î ¿©±â¿¡´Â ¿¹¿Ü¸¦ Àû¿ëÇÒ ¼ö¹Û¿¡ ¾ø´Ù. À§ ¿¹Á¦¿¡¼­ AddTimeÀ̶ó´Â ÇÔ¼öÀÇ À̸§À» operator +·Î ¹Ù²ã º¸ÀÚ.

 

class Time

{

     ....

    const Time operator +(const Time &T) const {

          ....

     }

};

 

¸®Åϰª, Àμö, º»Ã¼´Â ±×´ë·Î µÎ°í AddTimeÀ̶ó´Â À̸§¸¸ operator +·Î ¹Ù²Û °Í »ÓÀÌ´Ù. ÀÌ·¸°Ô ¿¬»êÀÚ ÇÔ¼ö¸¦ Á¤ÀÇÇϸé ÀÌ Å¬·¡½º ŸÀÔÀÇ °´Ã¼¸¦ Áº¯À¸·Î °¡Áö´Â + ¿¬»êÀÚ¸¦ ¾µ ¼ö ÀÖ´Ù. main ÇÔ¼öÀÇ AddTime È£Ãâ¹®µµ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù.

 

void main()

{

     Time A(1,1,1);

     Time B(2,2,2);

     Time C;

    

     A.OutTime();

     B.OutTime();

    C=A+B;

     C.OutTime();

}

 

C=A.AddTime(B)°¡ C=A+B·Î ¹Ù²î¾ú´Âµ¥ ÇÔ¼öÀÇ º»Ã¼ Äڵ尡 ¶È°°À¸¹Ç·Î µ¿ÀÛµµ ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù. ±×·¸´Ù¸é AddTime ÀÏ¹Ý ÇÔ¼ö¿Í operator +¿¬»êÀÚ ÇÔ¼ö´Â °ú¿¬ ¾î¶² Â÷ÀÌÁ¡ÀÌ ÀÖÀ»±î ºñ±³ÇØ º¸ÀÚ.

ù ¹øÂ°·Î ¿¬»êÀÚ ÇüÅÂÀÇ È£Ãâ ¹æ½ÄÀÌ ±æÀ̰¡ ª¾Æ ŸÀÌÇÎÇÏ±â Æí¸®ÇÏ¸ç ¿ÀŸ°¡ ¹ß»ýÇÒ °¡´É¼ºµµ ±ØÈ÷ ³·´Ù.

µÎ ¹øÂ°·Î ¿¬»êÀÚ ÇÔ¼ö´Â È£Ãâ Çü½ÄÀÌ ¿¬»ê¹® ÇüÅ·ΠÀÛ¼ºµÇ±â ¶§¹®¿¡ ÈξÀ ´õ Á÷°üÀûÀÌ°í ±âº»ÇüÀÇ ¿¬»ê ¹æ¹ý°ú ÀÏÄ¡ÇϹǷΠ»ç¿ëÇϱ⠽±´Ù. A+B¶ó´Â Ç¥Çö½Ä ÀÚü°¡ A¿Í B¸¦ ´õÇÑ´Ù´Â °ÍÀ» Àß Ç¥ÇöÇÑ´Ù.

¼¼ ¹øÂ°·Î ¿¬»êÀÚ´Â ÇÔ¼ö¿Í´Â ´Þ¸® ¿ì¼± ¼øÀ§¿Í °áÇÕ ¹æÇâÀÇ °³³äÀÌ ÀÖ¾î °ýÈ£¸¦ ¾²Áö ¾Ê¾Æµµ ¿¬»ê ¼ø¼­°¡ ÀÚµ¿À¸·Î Àû¿ëµÇ¾î Æí¸®ÇÏ´Ù. ¾î¶² °´Ã¼ A¿Í BÀÇ °ö°ú C¿Í DÀÇ °öÀ» ´õÇØ E¿¡ ´ëÀÔÇÑ´Ù°í ÇØ º¸ÀÚ.

 

ÀÏ¹Ý ÇÔ¼ö : E=(A.Multi(B)).Add(C.Multi(D));

¿¬»êÀÚ ÇÔ¼ö : E=A*B+C*D;

 

¾î´ÀÂÊÀÌ ´õ º¸±â ÁÁ°í Àбâ ÁÁÀºÁö´Â ±»ÀÌ °­Á¶ÇÏÁö ¾Ê´õ¶óµµ ½±°Ô ÆÇ´ÜµÉ °ÍÀÌ´Ù.

 

 

¿À¹ö·Îµù ±ÔÄ¢

 

¿¬»êÀÚ ¿À¹ö·ÎµùÀº ¾ÆÁÖ ¸ÚÁø ±â´ÉÀÓ¿¡ Ʋ¸²¾øÁö¸¸ ¾ÆÁÖ ¸¹Àº ±ÔÄ¢°ú Á¦¾àÀÌ Á¸ÀçÇÑ´Ù. ÀÌ ±ÔÄ¢µéÀº ¿¬»êÀÚ ¿À¹ö·Îµù¿¡ µû¸¥ ºÎÀÛ¿ëÀ» ÇØ¼ÒÇÏ°í ¾ÈÀüÇÏ°Ô ¿¬»êÀÚ¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¸¶·ÃµÈ °ÍµéÀÌ´Ù. .

 

1) ¿¬»êÀÚ ¿À¹ö·ÎµùÀº ÀÌ¹Ì Á¸ÀçÇÏ´Â ¿¬»êÀÚÀÇ ±â´ÉÀ» Á¶±Ý ¹Ù²Ù´Â °ÍÀÌÁö ¾Æ¿¹ »õ·Î¿î ¿¬»êÀÚ¸¦ ¸¸µå´Â °ÍÀº ¾Æ´Ï´Ù. ¿ø·¡ C++ ¾ð¾î°¡ Á¦°øÇÏ´Â ±âÁ¸ ¿¬»êÀÚ¸¸ ¿À¹ö·ÎµùÀÇ ´ë»óÀ̸ç C++ÀÌ Á¦°øÇÏÁö ¾Ê´Â ¿¬»êÀÚ¸¦ ÀÓÀÇ·Î ¸¸µé ¼ö´Â ¾ø´Ù. ¿¹¸¦ µé¾î C++Àº ´©½Â ¿¬»êÀÚ¸¦ Á¦°øÇÏÁö ¾Ê´Âµ¥(´ë½Å pow¶ó´Â Ç¥ÁØ ÇÔ¼ö¸¦ Á¦°øÇÑ´Ù.) ÀÌ·± ¸ñÀûÀ¸·Î **¶ó´Â ¿ÏÀüÈ÷ »õ·Î¿î ¿¬»êÀÚ¸¦ Á¤ÀÇÇÏ°í ½ÍÀ¸¸ç C++ÀÌ À̸¦ Çã¿ëÇÑ´Ù°í ÇØ º¸ÀÚ. ±×·¸´Ù¸é c=a**b; ¶ó´Â ¿¬»ê½ÄÀÌ °¡´ÉÇØÁö´Âµ¥ ÄÄÆÄÀÏ·¯°¡ ÀÌ ½ÄÀ» ÇØ¼®ÇÒ ¶§ µÎ °¡Áö ¸ðÈ£ÇÑ »óȲÀÌ ¹ß»ýÇÑ´Ù.

¿ì¼± ÀÌ ¿¬»ê½ÄÀ» a¸¦ b¸¸Å­ ´©½ÂÇ϶ó´Â °ÍÀÎÁö ¾Æ´Ï¸é a¿Í Æ÷ÀÎÅÍ b°¡ °¡¸®Å°´Â °÷ÀÇ ³»¿ëÀ» ÀÐ¾î °öÇ϶ó´Â °ÍÀÎÁö¸¦ ÆÇº°ÇÒ ¼ö ¾ø´Ù. a**b´Â a ´©½Â b·Î º¼ ¼öµµ ÀÖ°í a*(*b)·Î º¼ ¼öµµ ÀÖ¾î ±¸¹® ºÐ¼® ´Ü°è¿¡¼­ ¸ðÈ£ÇÔÀÌ ¹ß»ýÇÑ´Ù. ±×¸®°í »õ·Î ¸¸µé¾îÁø ¿¬»êÀÚÀÇ ¿ì¼± ¼øÀ§¿Í °áÇÕ ¼ø¼­¸¦ ¾î¶»°Ô Á¤ÇÒ °ÍÀÎÁöµµ ¹®Á¦°¡ µÈ´Ù. c=a**b+d¶ó´Â ½ÄÀÌ ÀÖÀ» ¶§ ´©½ÂÀÌ ¸ÕÀúÀÎÁö µ¡¼ÀÀÌ ¸ÕÀúÀÎÁö¸¦ ÄÄÆÄÀÏ·¯°¡ ÀÓÀÇ·Î °áÁ¤ÇÒ ¼ö ¾ø´Ù. ¸¸¾à À̰ÍÀ» Á¤ °¡´ÉÇÏ°Ô ÇÏÀÚ¸é »ç¿ëÀÚ°¡ »õ·Î ¸¸µç ¿¬»êÀÚÀÇ ¿ì¼± ¼øÀ§¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ¹®¹ýÀ» ¸¸µé¾î¾ß Çϴµ¥ ¿¬»êÀÚ Çϳª¸¦ ¾²±â À§ÇØ ÀÌ·± º¹ÀâÇÑ ÁöÁ¤±îÁö ÇØ¾ß ÇÑ´Ù¸é Â÷¶ó¸® ¾È ¾²´Â °ÍÀÌ ´õ ³ªÀ» °ÍÀÌ´Ù.

C++ÀÌ »ç¿ëÇÏÁö ¾Ê´Â ¹®ÀÚÀÎ $, @ °°Àº ±âÈ£¸¦ »õ·Î¿î ¿¬»êÀÚ·Î Á¤ÀÇÇÒ ¼ö ÀÖ´Ù¸é ³ª¸§´ë·Î Æí¸®ÇϰÚÁö¸¸ ¿À¹ö·ÎµùÀ̶õ ÀÌ¹Ì Á¸ÀçÇÏ´Â °ÍÀ» Áߺ¹ Á¤ÀÇÇÏ´Â °ÍÀÌÁö ¾ø´Â °É ¾Æ¿¹ »õ·Î ¸¸µå´Â °ÍÀÌ ¾Æ´Ï¹Ç·Î ÀÌ °æ¿ìµµ ºÎÀû´çÇÏ´Ù. »ç¿ëÀÚ°¡ ÀÓÀÇ·Î ¿¬»êÀÚ¸¦ ¸¸µé ¼ö ÀÖµµ·Ï ÇÏ´Â °ÍÀº À̷лó ºÐ¸íÈ÷ °¡´ÉÇÏÁö¸¸ ÀÌ·± ±â´ÉÀ» Áö¿øÇϱâ À§ÇØ ´ëÆøÀûÀÎ ¹®¹ýÀÇ È®ÀåÀÌ ÇÊ¿äÇÏ¸ç ¿¹±âÄ¡ ¸øÇÑ ºÎÀÛ¿ëÀÌ »ý±æ ¼ö ÀÖ´Ù. µæº¸´Ù ½ÇÀÌ ´õ ¸¹±â ¶§¹®¿¡ C++Àº ¾Æ¿¹ »õ·Î¿î ¿¬»êÀÚ¸¦ ¸¸µå´Â ¹®¹ýÀº Á¦°øÇÏÁö ¾Ê´Â´Ù.

 

2) ÀÌ¹Ì Á¸ÀçÇÏ´Â ¿¬»êÀÚ Áß¿¡µµ ¿À¹ö·ÎµùÀÇ ´ë»óÀÌ ¾Æ´Ñ °ÍµéÀÌ ÀÖ´Ù. ´ÙÀ½ ¿¬»êÀÚµéÀº ±â´ÉÀ» º¯°æÇÒ ¼ö ¾ø´Ù. Áï, ¿À¹ö·ÎµùÀÇ ´ë»óÀÌ ¾Æ´Ï´Ù.

 

.(±¸Á¶Ã¼ ¸â¹ö ¿¬»êÀÚ)                 ::(¹üÀ§ ¿¬»êÀÚ)                  ?:(»ïÇ× Á¶°Ç ¿¬»êÀÚ)

.*( ¸â¹ö Æ÷ÀÎÅÍ ¿¬»êÀÚ)                           sizeof                               typeid

static_cast                                 dynamic_cast                  const_cast

reinterpret_cast                                      new                                 delete

 

ÀÌ ¿¬»êÀÚµéÀº C++ÀÇ Å¬·¡½º¿Í °ü·ÃµÈ Áß¿äÇÑ µ¿ÀÛÀ» Çϱ⠶§¹®¿¡ Ŭ·¡½º¸¦ ±â¹ÝÀ¸·Î ÇÏ´Â ¿¬»êÀÚ ¿À¹ö·ÎµùÀÇ Àç·á·Î ¾²±â¿¡´Â ¹«¸®°¡ ÀÖ´Ù. Ŭ·¡½ºÀÇ ¸â¹ö¸¦ ÁöÁ¤ÇÏ´Â . ¿¬»êÀÚÀÇ µ¿ÀÛÀ» ¹Ù²ã ¹ö¸®¸é ¾î¶² È¥¶õÀÌ ¿ÃÁö °¡È÷ »ó»óÀÌ °¥ °ÍÀÌ´Ù. »ïÇ× Á¶°Ç ¿¬»êÀÚ´Â ÇÇ¿¬»êÀÚ°¡ ¼ÂÀ̳ª µÇ±â ¶§¹®¿¡ ¿À¹ö·ÎµùÀ» ÇÏ´õ¶óµµ ´Ù¸¥ ¿¬»êÀÚ¿¡ ºñÇØ ´õ º¹ÀâÇÑ ±ÔÄ¢ÀÌ ÇÊ¿äÇÒ °ÍÀ¸¹Ç·Î ¾Æ¿¹ ¿À¹ö·ÎµùÇÏÁö ¸øÇϵµ·Ï µÇ¾î ÀÖ´Ù. ÀÌ·± ¸î °¡Áö Ư¼öÇÑ ¿¬»êÀÚ¸¸ »©°í ³ª¸ÓÁö ¿¬»êÀÚµéÀº ¸ðµÎ ¿À¹ö·ÎµùÇÒ ¼ö ÀÖÀ¸¹Ç·Î ¿¬»êÀÚ°¡ ºÎÁ·ÇÑ »óȲÀº ¹ß»ýÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù.

¿À¹ö·Îµù °¡´ÉÇÑ ¿¬»êÀÚ Áß¿¡µµ °¡±ÞÀû ¿À¹ö·ÎµùÀ» »ï°¡ÇØ¾ß ÇÏ´Â °Íµµ ÀÖ´Ù. ¾ð¾î°¡ Á¦°øÇÏ´Â ¿¬»êÀÚ´Â ¿ì¼±¼øÀ§ ±ÔÄ¢ÀÌ ¸íÈ®ÇÏ°Ô Á¤ÀǵǾî ÀÖ¾î Á¿ìÀÇ ÇÇ¿¬»êÀÚ Áß ¾î¶² °ÍÀÌ ¸ÕÀú Æò°¡µÉÁö ¿¹Ãø °¡´ÉÇÏ´Ù. ±×·¯³ª ÇÔ¼ö·Î ¿À¹ö·ÎµùµÇ¸é ÀμöÀÇ Æò°¡ ¼ø¼­°¡ Á¤ÀǵÇÁö ¾ÊÀ¸¹Ç·Î ¿øÄ¡ ¾Ê´Â ºÎÀÛ¿ëÀÌ ¹ß»ýÇÒ ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î ÄÞ¸¶ ¿¬»êÀÚÀÇ °æ¿ì Á¿¡¼­ ¿ì·Î ¼ø¼­´ë·Î Æò°¡ÇÏÁö¸¸ ÇÔ¼ö·Î ¿À¹ö·ÎµùµÇ¸é ÀÌ·± ¿ì¼± ¼øÀ§°¡ ´õ ÀÌ»ó Àû¿ëµÇÁö ¾Ê´Â´Ù. ÇÔ¼öÀÇ Àμö´Â º¸Åë ¿ì¿¡¼­ Á·ΠÆò°¡µÇ¾î ¿¬»êÀÚÀÇ Æò°¡ ¼ø¼­¿Í´Â ¹Ý´ë·Î µÇ¾î Àִµ¥ ¼ø¼­°¡ Àǹ̰¡ ÀÖÀ» ¶§´Â ¹®Á¦°¡ µÉ ¼öµµ ÀÖ´Ù.

&&, || ³í¸® ¿¬»êÀÚÀÇ °æ¿ì ¹®¹ýÀûÀ¸·Î´Â Çã¿ëµÈ´Ù ÇÏ´õ¶óµµ ±× È¿°ú¸¦ ¿¹ÃøÇϱ⠾î·Á¿ì¹Ç·Î °¡±ÞÀûÀ̸é ÀÌ ¿¬»êÀÚµéÀº ¿À¹ö·ÎµùÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù. »ç½Ç ÀÌ ¿¬»êÀÚµéÀÌ ¿À¹ö·ÎµùµÇ¾î¾ß ÇÏ´Â °æ¿ìµµ °ÅÀÇ ¾ø´Â ÆíÀÌ´Ù.

3) ±âÁ¸ ¿¬»êÀÚÀÇ ±â´ÉÀ» ¹Ù²Ù´õ¶óµµ ¿¬»êÀÚÀÇ º»·¡ ÇüÅ´ º¯°æÇÒ ¼ö ¾ø´Ù. ¿©±â¼­ º»·¡ ÇüŶó°í ÇÏ´Â °ÍÀº ÇÇ¿¬»êÀÚÀÇ °³¼ö¿Í ¿ì¼± ¼øÀ§¸¦ ¸»ÇÑ´Ù. + ¿¬»êÀÚ´Â ¿ø·¡ ÇÇ¿¬»êÀÚ¸¦ µÎ °³ ÃëÇÏ´Â ÀÌÇ× ¿¬»êÀÚÀ̹ǷΠ¿À¹ö·ÎµùµÈ ÈÄ¿¡µµ ÀÌÇ× ¿¬»êÀÚ¿©¾ß ÇÏ¸ç ¹Ýµå½Ã ÇÇ¿¬»êÀÚ µÎ °³¸¦ °¡Á®¾ß ÇÑ´Ù.

 

¿ì¼± ¼øÀ§³ª °áÇÕ ¼ø¼­µµ º¯°æÇÒ ¼ö ¾ø´Ù. + ¿¬»êÀÚÀÇ ±â´ÉÀ» ¹Ù²Ù¾î °ö¼ÀÀ̳ª ´©½ÂÀ» Çϵµ·Ï ¿À¹ö·ÎµùÇß´Ù ÇÏ´õ¶óµµ ÀÌ ¿¬»êÀÚÀÇ ¿ì¼± ¼øÀ§´Â ¿ø·¡ÀÇ + ¿¬»êÀÚÀÇ °Í°ú µ¿ÀÏÇÏ´Ù. ÄÄÆÄÀÏ·¯´Â ¿¬»êÀÚ°¡ ³í¸®ÀûÀ¸·Î ¾î¶² ¿¬»êÀ» ÇÏ´ÂÁö ´Ù¸¥ ¿¬»ê°úÀÇ °ü°è°¡ ¾î¶°ÇÑÁö±îÁö´Â ÆÇ´ÜÇÒ ¼ö ¾ø´Ù. µû¶ó¼­ ¿ÏÀüÈ÷ »õ·Î¿î ¿¬»êÀ» Á¤ÀÇÇϰíÀÚ ÇÒ ¶§ Àû´çÇÑ ¿ì¼± ¼øÀ§¸¦ °¡Áö´Â ¿¬»êÀÚ¸¦ °ñ¶ó ¿À¹ö·ÎµùÇØ¾ß ÇÑ´Ù.

´Ù¸¥ ¾ð¾î´Â ´©½Â ¿¬»êÀ» À§ÇØ ^ ±âÈ£¸¦ »ç¿ëÇÑ´Ù. ±×·¡¼­ ^ ¿¬»êÀÚ¸¦ ´©½Â ¿¬»êÀÚ·Î ÀçÁ¤ÀÇÇÑ´Ù¸é º£ÀÌÁ÷ ¾ð¾îó·³ Æí¸®ÇÏ°Ô ´©½Â ¿¬»êÀ» ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×·¯³ª C++¿¡¼­ ¿ø·¡ÀÇ ^ ¿¬»êÀÚ´Â °ö¼Àº¸´Ù ¿ì¼± ¼øÀ§°¡ ´Ê°í ½ÉÁö¾î µ¡¼ÀÀ̳ª »¬¼Àº¸´Ùµµ ¿ì¼± ¼øÀ§°¡ ´Ê¾î ¸ð¾çÀÌ Á÷°üÀûÀÌ´õ¶óµµ ´©½Â ¿¬»êÀÚ·Î ÀçÁ¤ÀÇÇϱ⿡´Â ¾î¿ï¸®Áö ¾Ê´Â´Ù. 2^3+4´Â 12¿©¾ß »ó½ÄÀûÀÌÁö¸¸ +ÀÇ ¼øÀ§°¡ ³ô¾Æ 128ÀÌ µÇ¾î ¹ö¸°´Ù.

 

4) ¿À¹ö·ÎµùµÈ ¿¬»êÀÚÀÇ ÇÇ¿¬»êÀÚ Áß Àû¾îµµ Çϳª´Â »ç¿ëÀÚ Á¤ÀÇÇüÀ̾î¾ß ÇÑ´Ù. ¿¬»êÀÚÀÇ ±â´ÉÀ» ¹Ù²Ù´Â ¸ñÀûÀº °´Ã¼¿¡ ´ëÇÑ °íÀ¯ÇÑ ¿¬»ê ¹æ¹ýÀ» Á¤ÀÇÇϱâ À§ÇÑ °ÍÀ̹ǷΠ¹Ýµå½Ã °´Ã¼¿Í °ü·ÃÀÖ´Â ¿¬»êÀÚ¸¸ Áߺ¹ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. C++ÀÌ ±âº»ÀûÀ¸·Î Á¦°øÇϴ ŸÀÔ¿¡ ´ëÇØ¼­´Â ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇÒ ¼ö ¾ø´Ù. ¸¸¾à ´ÙÀ½°ú °°Àº ¿¬»êÀÚ ÇÔ¼ö¸¦ ¸¸µé ¼ö ÀÖ´Ù°í ÇØ º¸ÀÚ.

 

int operator +(int a, int b)

{

     ....

}

 

ÀÌ ÇÔ¼ö´Â Á¤¼öÇüÀÇ µ¡¼À ¿¬»êÀ» ¿ÏÀüÈ÷ »õ·Î Á¤ÀÇÇϴµ¥ Á¤¼öÇüÀÇ µ¡¼ÀÀº ¾ð¾îÀÇ °¡Àå ±âº»ÀûÀÎ µ¿ÀÛÀ̰í CPUÀÇ ¿øÀÚÀûÀÎ ¿¬»êÀ̱⠶§¹®¿¡ ÀÌ µ¿ÀÛÀÌ ¹Ù²î°Ô µÇ¸é ÆÄ±ÞÈ¿°ú°¡ ³Ê¹« ¾öû³¯ °ÍÀÌ´Ù. ±×·¡¼­ ÄÄÆÄÀÏ·¯´Â ±âº»Çü¿¡ ´ëÇÑ ¿¬»êÀÚ ¿À¹ö·ÎµùÀº °ÅºÎÇϸç "ÃÖ¼ÒÇÑ ÇϳªÀÇ ÇÇ¿¬»êÀڴ Ŭ·¡½º ŸÀÔÀ̾î¾ß ÇÑ´Ù"´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù.

»ç½Ç À§¿¡¼­ º¸ÀÎ µÎ °³ÀÇ Á¤¼ö¸¦ ´õÇÏ´Â ¿¬»êÀÚ´Â ½Ã½ºÅÛ¿¡ ÀÌ¹Ì Á¸ÀçÇÑ´Ù. ¿À¹ö·ÎµùÀ̶õ ÀμöÀÇ °³¼ö³ª ŸÀÔÀÌ ´Þ¶ó¾ß ÇϹǷΠÀ§ ¿¬»êÀÚ´Â ¿À¹ö·ÎµùÀÇ ´ë»óÀÌ µÉ ¼öµµ ¾ø´Ù. ¿À¹ö·ÎµùÀ̶õ ÀÌ¹Ì Á¸ÀçÇÏ´Â ÇÔ¼öÀÇ ±â´ÉÀ» ¹Ù²Ù´Â °ÍÀÌ ¾Æ´Ï¶ó ŸÀÔ¿¡ µû¶ó ´Ù¸£°Ô µ¿ÀÛÇÏ´Â ÇÔ¼ö¸¦ Áߺ¹ Á¤ÀÇÇÏ´Â °ÍÀ̹ǷΠ±âº» ŸÀÔ¿¡ ´ëÇÑ ¿¬»êÀÚ´Â ¸¸µé ¼ö ¾ø´Â °ÍÀÌ´Ù.

 

°­Á¦ÀûÀÎ ±ÔÄ¢Àº ¾Æ´ÏÁö¸¸ ¿¬»êÀÚÀÇ ³í¸®Àû Àǹ̴ °¡±ÞÀû À¯ÁöÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. + ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇÑ´Ù¸é ¾î¶² Ŭ·¡½º¿¡ ´ëÇØ¼­¶óµµ µ¡¼ÀÀÇ Àǹ̸¦ °¡Áö´Â ¿¬»êÀ» ÇÏ´Â °ÍÀÌ ÁÁ´Ù. ±×·¡¾ß ¿¬»êÀÚ¿¡ ´ëÇÑ »ç¿ëÀÚµéÀÇ ±âÁ¸ »ó½ÄÀ» º¸È£ÇÒ ¼ö ÀÖ´Ù. + ¿¬»êÀÚ¸¦ ´õÇϱâ¿Í´Â ÀüÇô »ó°ü¾ø´Â ´Ù¸¥ ¿¬»êÀ¸·Î ¿À¹ö·ÎµùÇØ ¹ö¸®¸é ÀÌ °´Ã¼¸¦ »ç¿ëÇÏ´Â »ç¶÷Àº È¥¶õ½º·¯¿öÇÒ °ÍÀÌ´Ù. ±×·¯³ª ÀÌ ±ÔÄ¢Àº ¾îµð±îÁö³ª ±ÇÀå »çÇ×ÀÏ »ÓÀ̹ǷΠºÒ°¡ÇÇÇÒ °æ¿ì´Â ÁöŰÁö ¾Ê¾Æµµ »ó°ü¾ø´Ù.

¿¹¸¦ µé¾î Ç¥ÁØ ÀÔÃâ·Â ½ºÆ®¸²ÀÎ coutÀº ½¬ÇÁÆ® ¿¬»êÀÚÀÎ << ¸¦ ¸ð¾çÀÌ ¸¶À½¿¡ µç´Ù´Â ÀÌÀ¯·Î Ãâ·Â ¿¬»êÀÚ·Î ÀçÁ¤ÀÇÇÏ´Â ¸¸ÇàÀ» ÀúÁö¸£±âµµ ÇÑ´Ù. ±âº» ¹®¹ý¿¡´Â Á¦°øµÇÁö ¾Ê´Â ¿ÏÀüÈ÷ »õ·Î¿î ¿¬»êÀ» Á¤ÀÇÇÒ °æ¿ì´Â Àû´çÇÑ ¿ì¼± ¼øÀ§¸¦ °¡Áö°í ¸ð¾çÀÌ Á» ±×·²½ÎÇØº¸ÀÌ´Â ¿¬»êÀÚ Çϳª¸¦ ¼±ÅÃÇÒ ¼ö¹Û¿¡ ¾øÀ» °ÍÀÌ´Ù.

 

¿¬»êÀÚ¸¦ ÀûÀýÇÏ°Ô ¿À¹ö·ÎµùÇÏ¸é º¹ÀâÇÑ °ÍÀ» °£°áÇÏ°Ô ³í¸®ÀûÀ¸·Î Ç¥±âÇÒ ¼ö ÀÖ°í ¾î¶² µ¿ÀÛÀ» ÇÑ´Ù´Â °ÍÀ» ¸íÈ®ÇÏ°Ô Ç¥ÇöÇÒ ¼ö ÀÖ¾î °¡µ¶¼º¿¡ À¯¸®ÇÏ´Ù. ¶ÇÇÑ ÀÌ¹Ì Àͼ÷ÇØÁø ¿¬»êÀÚ¸¦ Á÷°üÀûÀÎ ¹æ¹ýÀ¸·Î Ȱ¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î »ý»ê¼º Çâ»ó¿¡µµ Å« ±â¿©¸¦ ÇÑ´Ù. ±×·¯³ª ¿¬»êÀÚ ¿À¹ö·Îµù¿¡´Â ¿©·¯ °¡Áö ºÎÀÛ¿ëµµ ÀÖÀ½À» ¾Ë¾Æ¾ß ÇÑ´Ù. ¸ðµç ¹®¹ýÀÌ ¸¶Âù°¡Áö°ÚÁö¸¸ ¿¬»êÀÚ ¿À¹ö·ÎµùÀº ²À ÇÊ¿äÇÒ ¶§, ±×¸®°í ³í¸®ÀûÀ¸·Î ¹«¸®°¡ ¾øÀ» ¶§¿¡ ÇÑÇØ ±ÔÄ¢¿¡ ¸Â°Ô ¾ÈÀüÇÏ°Ô »ç¿ëÇØ¾ß ÇÑ´Ù.

C++ÀÇ Ã¶ÇÐÀº ÀÛ¼ºÇÏ´Â »ç¶÷À» Æí¸®ÇÏ°Ô ÇÏ´Â °Íº¸´Ù´Â ¸¸µé¾îÁø °´Ã¼¸¦ »ç¿ëÇÏ´Â »ç¶÷À» ÆíÇÏ°Ô ÇÏÀÚ´Â µ¥ ÀÖ´Ù. º¸´Ù½ÃÇÇ ¿¬»êÀÚ ¿À¹ö·ÎµùÀ̶õ º¹ÀâÇÑ ±ÔÄ¢ÀÌ Á¸ÀçÇÏ°í ¼²ºÒ¸® À߸ø ¸¸µé °æ¿ì ¿Àµ¿ÀÛÀ» ÇÒ À§ÇèÀÌ µµÃ³¿¡ µµ»ç¸®°í ÀÖÁö¸¸ ÇÑ ¹ø¸¸ Àß ¸¸µé¾î ³õÀ¸¸é ¿©·¯ »ç¶÷ÀÌ Æí¸®ÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â ±×·± ÀåÄ¡ÀÌ´Ù.

 

 

 

ÇÔ¼ö¿Í ¿¹¿Ü ó¸®

¿¹¿Ü¸¦ ´øÁö´Â throw´Â º¸Åë try ºí·Ï ³»ºÎ¿¡ ÀÖ¾î¾ß ÇÑ´Ù. ±×·¯³ª ÇÔ¼ö ¾È¿¡¼­´Â try ºí·Ï¾øÀÌ throw¸¸ ÀÖÀ» ¼öµµ ÀÖ´Ù. À̶§´Â ÇÔ¼ö¸¦ È£ÃâÇϴ ȣÃâ¿øÀÌ try ºí·ÏÀ» °¡Á®¾ß ÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â 0À¸·Î ³ª´©´Â ÇÔ¼ö divide¸¦ ÀÛ¼ºÇϰí ÀÌ ÇÔ¼ö¿¡¼­ Àμö·Î Àü´ÞµÈ d°¡ 0ÀÏ ¶§ throw·Î ¿¹¿Ü¸¦ ´øÁø´Ù. main¿¡¼­ 4¹ø throw¸¦ È£ÃâÇϴµ¥ °¢ °æ¿ì¿¡ ¾î¶»°Ô 󸮵ǴÂÁö º¸ÀÚ.

 

#include <Turboc.h>

 

void divide(int a, int d)

{

     if (d == 0) throw "0À¸·Î´Â ³ª´­ ¼ö ¾ø½À´Ï´Ù.";

     printf("³ª´©±â °á°ú = %dÀÔ´Ï´Ù.\n",a/d);

}

 

void main()

{

     try {

          divide(10,0);

     }

     catch(const char *message) {

          puts(message);

     }

     divide(10,5);

//  divide(2,0);

/*

     try {

          divide(20,0);

     }

     catch(int code) {

          printf("%d¹ø ¿¡·¯°¡ ¹ß»ýÇß½À´Ï´Ù.\n",code);

     }

//*/

}

 

ÇÔ¼ö ½ÇÇàÁß¿¡ throw¸¦ ¸¸³ª¸é ´ëÀÀµÇ´Â catch¸¦ ã±â À§ÇØ ÀÚ½ÅÀ» È£ÃâÇÑ È£Ãâ¿øÀ» °Å½½·¯ ¿Ã¶ó°¡¾ß ÇÑ´Ù. ù ¹øÂ° divide È£Ãâ¹®¿¡¼­ ¿¹¿Ü°¡ ¹ß»ýÇϸé divide ÇÔ¼ö´Â ÀÚ½ÅÀ» È£ÃâÇÑ mainÀ¸·Î µ¹¾Æ¿Í¼­ ´ëÀÀµÇ´Â catch¹®À» ã¾Æ ÀÌ Äڵ带 ½ÇÇàÇÑ´Ù. catch´Â throw°¡ ´øÁø ¿¡·¯ ¸Þ½ÃÁö ¹®ÀÚ¿­À» È­¸éÀ¸·Î ±×´ë·Î Ãâ·ÂÇÒ °ÍÀÌ´Ù. ¸¸¾à main°ú divide »çÀÌ¿¡ ´Ù¸¥ ÇÔ¼öµéÀÌ ÀÖ´õ¶óµµ ¸¶Âù°¡Áö·Î main±îÁö º¹±ÍÇÑ ÈÄ ¿¹¿Ü°¡ 󸮵ȴÙ.

ÇÔ¼ö°¡ È£ÃâµÉ ¶§´Â ½ºÅÿ¡ °¢ ÇÔ¼öÀÇ ½ºÅà ÇÁ·¹ÀÓÀÌ »ý¼ºµÇ¸ç ½ºÅà ÇÁ·¹ÀÓ¿¡´Â ÇÔ¼ö ½ÇÇà¿¡ ÇÊ¿äÇÑ ¿©·¯ °¡Áö Á¤º¸µéÀÌ ÀúÀåµÈ´Ù. ÇÔ¼ö°¡ ¸®ÅÏÇÒ ¶§ ½ºÅà ÇÁ·¹ÀÓÀº Á¤È®ÇÏ°Ô È£Ãâ ÀüÀÇ »óÅ·Πµ¹¾Æ°¡µµ·Ï µÇ¾î ÀÖ´Ù. ¿¹¿Ü°¡ ¹ß»ýÇßÀ» ¶§ È£Ãâ¿øÀÇ catch·Î °ð¹Ù·Î Á¡ÇÁÇØ ¹ö¸®¸é ½ºÅÃÀÌ Ç×»ó¼ºÀ» ÀÒ¾î ¹ö¸®¹Ç·Î ÀÌÈÄ ÇÁ·Î±×·¥ÀÌ Á¦´ë·Î ½ÇÇàµÉ ¼ö ¾øÀ» °ÍÀÌ´Ù. ±×·¡¼­ throw´Â È£Ãâ¿øÀ¸·Î µ¹¾Æ°¡±â Àü¿¡ ÀڽŰú ÀÚ½ÅÀ» È£ÃâÇÑ ÇÔ¼öÀÇ ½ºÅÃÀ» ¸ðµÎ Á¤¸®ÇÏ°í µ¹¾Æ°¡´Âµ¥ À̸¦ ½ºÅà µÇ°¨±â(Stack Unwinding)¶ó°í ÇÑ´Ù.

ù ¹øÂ° divide È£Ãâ¹®ÀÌ ¿¹¿Ü¸¦ ´øÁú ¶§ mainÀÇ catch°¡ ÀÌ ¿¹¿Ü¸¦ ó¸®ÇÑ ÈÄ ±× ´ÙÀ½ ¹®ÀåÀ» ¾Æ¹« ÀÌ»ó¾øÀÌ ½ÇÇàÇÒ ¼ö ÀÖ´Â ÀÌÀ¯´Â throw°¡ ½ºÅà µÇ°¨±â¸¦ ÇÏ¿© mainÀÇ ½ºÅà ÇÁ·¹ÀÓÀ» divide È£Ãâ ÀüÀÇ »óÅ·Πº¹±¸Çϱ⠶§¹®ÀÌ´Ù. µÎ ¹øÂ° divide(10,5)´Â ¿Ã¹Ù¸¥ Àμö¸¦ Àü´ÞÇßÀ¸¹Ç·Î ¿¹¿Ü°¡ ¹ß»ýµÇÁö ¾ÊÀ¸¸ç È£Ãâ ÈÄ Á¤»óÀûÀÎ ÀýÂ÷´ë·Î ¸®ÅÏÇÑ´Ù.

¼¼ ¹øÂ° divide(2,0) È£ÃâÀº µÎ ¹øÂ° Àμö°¡ 0À̹ǷΠ¿¹¿Ü°¡ ¹ß»ýÇϴµ¥ À̶§ ÀÌ ¿¹¿Ü¸¦ ¹Þ¾ÆÁÙ catch¹®ÀÌ ¾ø´Ù. ÇÔ¼ö È£ÃâºÎ°¡ try ºí·Ï¿¡ ÀÖÁö ¾Ê±â ¶§¹®Àε¥ À̶§´Â ¿¹¿Ü¸¦ ó¸®ÇÒ ¼ö ¾øÀ¸¹Ç·Î µðÆúÆ® 󸮵Ǿî ÇÁ·Î±×·¥ÀÌ °­Á¦·Î Á¾·áµÈ´Ù. ¼³»ç try¾È¿¡ ÀÖ´õ¶óµµ ¿¹¿Ü¸¦ ¹Þ¾ÆÁÙ catch°¡ ¾øÀ¸¸é À̶§µµ 󸮵ÇÁö ¾Ê´Âµ¥ ³× ¹øÂ° È£Ãâ¹® divide(20,0)ÀÇ °æ¿ì try¾È¿¡ ÀÖ°í catchµµ ÀÖÁö¸¸ divide°¡ ´øÁö´Â char * ŸÀÔÀÇ catch´Â ¾øÀ¸¹Ç·Î ¿ª½Ã 󸮵ÇÁö ¾Ê°í ÇÁ·Î±×·¥Àº Á¾·áµÈ´Ù.

throw´Â ´ëÀÀµÇ´Â try ºí·ÏÀÇ catch¸¦ ã±â À§ÇØ ½ºÅÿ¡¼­ À§ÂÊ ÇÔ¼ö¸¦ ã¾Æ ¿Ã¶ó°¡¸é¼­ È£Ãâ ½ºÅÃÀ» Â÷·Ê´ë·Î Á¤¸®Çϴµ¥ À̶§ °¢ ÇÔ¼öµéÀÌ Áö¿ªÀûÀ¸·Î ¼±¾ðÇÑ °´Ã¼µéµµ Á¤»óÀûÀ¸·Î ÆÄ±«µÈ´Ù. ´ÙÀ½ ¿¹Á¦¸¦ ÅëÇØ ½ºÅÃÀ» µÇ°¨´Â ÀýÂ÷¸¦ ¿¬±¸ÇØ º¸ÀÚ.

 

 #include <Turboc.h>

 

class C

{

     int a;

public:

     C() { puts("»ý¼ºÀÚ È£Ãâ"); }

     ~C() { puts("ÆÄ±«ÀÚ È£Ãâ"); }

};

 

void divide(int a, int d)

{

     if (d == 0) throw "0À¸·Î´Â ³ª´­ ¼ö ¾ø½À´Ï´Ù.";

     printf("³ª´©±â °á°ú = %dÀÔ´Ï´Ù.\n",a/d);

}

 

void calc(int t,const char *m)

{

     C c;

     divide(10,0);

}

 

void main()

{

     try {

          calc(1,"°è»ê");

     }

     catch(const char *message) {

          puts(message);

     }

     puts("ÇÁ·Î±×·¥ÀÌ Á¾·áµË´Ï´Ù.");

}

 

mainÀÇ try ºí·Ï¿¡¼­ calc¸¦ ºÎ¸£°í calc´Â Áö¿ª °´Ã¼ C¸¦ ¼±¾ðÇÑ´Ù. ±×¸®°í ¿¹¿Ü¸¦ ÀÏÀ¸Å°´Â divide(10,0)À» È£ÃâÇϴµ¥ ÀÌ ÇÔ¼ö¿¡¼­ throw¿¡ ÀÇÇØ ¹®ÀÚ¿­ ¿¹¿Ü°¡ ´øÁ®Áø´Ù. ÀÌ ¶§ÀÇ ½ºÅà »óȲÀº ´ÙÀ½°ú °°À» °ÍÀÌ´Ù.

divide¿¡¼­ ¿¹¿Ü°¡ ¹ß»ýÇßÀ¸¹Ç·Î ÀÌ ÇÔ¼ö´Â ´õ ÀÌ»ó ½ÇÇàÇÒ ¼ö ¾ø´Ù. ±×·¡¼­ ÀÌ ¿¹¿Ü¸¦ ó¸®ÇÒ catch¹®À» ã´Âµ¥ ÇÔ¼ö ³»ºÎ¿¡¼­´Â catch°¡ ¾øÀ¸¹Ç·Î ÀÏ´Ü ÀÚ½ÅÀ» È£ÃâÇÑ calc ÇÔ¼ö·Î µ¹¾Æ°£´Ù. ÀÌ °úÁ¤¿¡¼­ ÀÚ½ÅÀÇ ½ºÅà ÇÁ·¹ÀÓÀº Á¤¸®Çϴµ¥ ÀÌ·¸°Ô ÇÏÁö ¾ÊÀ¸¸é È£Ãâ¿øÀÌ ¿¹¿Ü¸¦ ó¸®ÇÏ´õ¶óµµ Á¦´ë·Î ½ÇÇàµÉ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù.

calc¿¡¼­ ´Ù½Ã catch¸¦ ã´Âµ¥ ÀÌ ÇÔ¼öµµ catch¸¦ °¡Áö°í ÀÖÁö ¾ÊÀ¸¹Ç·Î °°Àº ¹æ½ÄÀ¸·Î ½ºÅÃÀ» Á¤¸®ÇÑ´Ù. À̶§ calcÀÇ Àμö t¿Í m, Áö¿ªº¯¼ö C°¡ ÆÄ±«µÇ´Âµ¥ C´Â °´Ã¼À̹ǷΠÁ¤»óÀûÀÎ ÆÄ±«¸¦ À§ÇØ ÆÄ±«ÀÚ°¡ È£ÃâµÈ´Ù. calc°¡ mainÀ¸·Î ¸®ÅÏÇϸé mainÀÇ catch(char *)·Î Á¡ÇÁÇÏ¿© ¿¹¿Ü¸¦ ó¸®ÇÑ´Ù. ½ºÅà µÇ°¨±â¸¦ Çϸ鼭 ¸®ÅϵǴ ÇÔ¼öÀÇ ¸ðµç Áö¿ª °´Ã¼¸¦ ÆÄ±«Çϴµ¥ ¸¸¾à ÆÄ±«ÀÚ¸¦ È£ÃâÇÏÁö ¾Ê´Â´Ù¸é ¿¹¿Ü¸¸ ó¸®µÉ »Ó »ý¼ºµÈ °´Ã¼µéÀÌ Á¦´ë·Î ÇØÁ¦µÇÁö ¾Ê¾Æ ÇÁ·Î±×·¥ÀÇ »óÅ´ ¿©ÀüÈ÷ ºÒ¾ÈÇØÁú °ÍÀÌ´Ù. ÆÄ±«ÀÚ´Â ´Ü¼øÈ÷ ¸Þ¸ð¸®¸¸ Á¤¸®ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ¶§·Î´Â DB ¿¬°á ÇØÁ¦, ÇÁ·Î±×·¥ »óÅ º¯°æ µîÀÇ Áß¿äÇÑ ÀÏÀ» ÇÒ ¼öµµ ÀÖÀ¸¹Ç·Î ¹Ýµå½Ã È£ÃâÇØ¾ß ÇÑ´Ù.

throw°¡ ´ëÀÀµÇ´Â catch¸¦ ã±â À§ÇØ ½ºÅà µÇ°¨±â¸¦ ÇØ¾ß ÇÏ´Â ÀÌÀ¯´Â ¾ÆÁÖ ¸í¹éÇÏ´Ù. throw´Â catch·ÎÀÇ Á¡ÇÁ µ¿ÀÛÀ» Çϴµ¥ ÇÔ¼ö°£¿¡ ¾Æ¹«·¸°Ô³ª Á¡ÇÁ¸¦ ÇØ ¹ö¸®¸é ½ºÅÃÀÇ È£Ãâ Á¤º¸´Â ¾û¸ÁÀÌ µÇ¾î ¹ö¸°´Ù. È£Ãâ¿øÀ¸·Î µ¹¾Æ°¥ ¶§´Â ½ºÅõµ È£Ãâ¿øÀÇ °ÍÀ¸·Î Á¤È®ÇÏ°Ô º¹±¸ÇØ¾ß ÇÏ¸ç ±×·¯±â À§Çؼ­´Â ÀÚ½ÅÀ» È£ÃâÇÑ ¸ðµç ÇÔ¼öÀÇ ½ºÅÃÀ» ÀÏÀÏÀÌ Á¤¸®ÇØ¾ß ÇÏ´Â °ÍÀÌ´Ù. À§ ¿¹¿¡¼­ mainÀÇ ¸¶Áö¸·¿¡ ÀÖ´Â puts°¡ Á¦´ë·Î ½ÇÇàµÇ·Á¸é catch°¡ ¿¹¿Ü¸¦ ó¸®ÇÑ ÈÄ ½ºÅÃÀÇ ÃÖ»ó´Ü¿¡´Â mainÀÇ ½ºÅà ÇÁ·¹ÀÓÀÌ ÀÖ¾î¾ß ÇÏ¸ç ±×·¯±â À§Çؼ­´Â divideÀÇ throw°¡ divide¿Í calcÀÇ ½ºÅÃÀ» Á¤¸®ÇØ¾ß ÇÏ´Â °ÍÀÌ´Ù.

 

Áßø ¿¹¿Ü ó¸®

¿¹¿Ü ó¸® ±¸¹®Àº Áßø °¡´ÉÇÏ´Ù. Áï try ºí·Ï¾È¿¡ ¶Ç ´Ù¸¥ try ºí·ÏÀÌ ÀÖÀ» ¼ö ÀÖÀ¸¸ç Áßø ´Ü°è¿¡´Â º°´Ù¸¥ Á¦¾àÀÌ ¾ø´Ù. ´ÙÀ½ ¿¹Á¦´Â Çйø, À̸§, ³ªÀ̸¦ ÀÔ·Â¹Þ¾Æ ±×´ë·Î Ãâ·ÂÇϴµ¥ Çйø°ú ³ªÀÌ´Â ¹Ýµå½Ã ¾ç¼ö¿©¾ß Çϸç À̸§Àº ÃÖ¼ÒÇÑ 4ÀÚ ÀÌ»óÀ̾î¾ß ÇÑ´Ù. Çѱ¹ »ç¶÷ À̸§Àº ÃÖ¼ÒÇÑ 2±ÛÀÚ ÀÌ»óÀ̹ǷΠ¾Æ¹«¸® ª¾Æµµ 4¹ÙÀÌÆ® ÀÌ»óÀ̾î¾ß ÇÑ´Ù´Â ±ÔÄ¢Àº ¾ÆÁÖ ÀÚ¿¬½º·´´Ù.

 

 #include <Turboc.h>

 

void main()

{

     int Num;

     int Age;

     char Name[128];

 

     try {

          printf("ÇйøÀ» ÀÔ·ÂÇϽÿÀ : ");

          scanf("%d",&Num);

          fflush(stdin);

          if (Num <= 0) throw Num;

          try {

              printf("À̸§À» ÀÔ·ÂÇϽÿÀ : ");

              gets(Name);

              if (strlen(Name) < 4) throw "À̸§ÀÌ ³Ê¹« ª½À´Ï´Ù";

              printf("³ªÀ̸¦ ÀÔ·ÂÇϽÿÀ : ");

              scanf("%d",&Age);

              if (Age <= 0) throw Age;

              printf("ÀÔ·ÂÇÑ Á¤º¸ => Çйø:%d, À̸§:%s, ³ªÀÌ:%d\n",Num,Name,Age);

          }

          catch(const char *Message) {

              puts(Message);

          }

          catch(int) {

              throw;

          }

     }

     catch(int n) {

          printf("%d´Â À½¼öÀ̹ǷΠÀûÇÕÇÏÁö ¾Ê½À´Ï´Ù.\n",n);

     }

}

 

ÃÖÃÊ ¹Ù±ùÂÊÀÇ try ºí·Ï¿¡¼­ Çйø NumÀ» ÀԷ¹޴µ¥ ÀÌ °ªÀÌ À½¼ö(0µµ Æ÷ÇÔ)ÀÏ °æ¿ì À߸øµÈ °ªÀ̹ǷΠNumÀ» ¿¹¿Ü·Î ´øÁø´Ù. ÀÌ ¿¹¿Ü´Â ¹Ù±ùÂÊÀÇ catch(int n)°¡ ¹Þ¾Æ ó¸®ÇÒ °ÍÀÌ´Ù. ÇйøÀÌ Á¦´ë·Î ÀԷµǾúÀ» °æ¿ì À̸§°ú ³ªÀ̸¦ ÀԷ¹޴µ¥ À̸§ ±æÀ̰¡ 4º¸´Ù ÀÛÀ» °æ¿ì ¹®ÀÚ¿­·Î µÈ ¿¹¿Ü¸¦ ´øÁø´Ù. ÀÌ ¿¹¿Ü´Â ¾ÈÂÊÀÇ catch(const char *)°¡ ¹Þ¾Æ¼­ ó¸®ÇÑ´Ù.

³ªÀ̰¡ À½¼öÀÏ °æ¿ì´Â ¾ÈÂÊÀÇ catch(int)·Î ¿¹¿Ü¸¦ ´øÁø´Ù. À̶§ ¾ÈÂÊ¿¡¼­ Á¤¼öÇü ¿¹¿Ü¸¦ ó¸®Çϱ⿡ ºÎÀû´çÇϴٰųª ¾Æ´Ï¸é ÀÌ¹Ì ¹Ù±ùÂÊ¿¡¼­ °°Àº Á¾·ùÀÇ ¿¹¿Ü¸¦ ó¸®Çϰí ÀÖ´Ù¸é ¾ÈÂÊÀÇ catch¿¡¼­´Â ÀÌ ¿¹¿Ü¸¦ Á÷Á¢ ó¸®ÇÏÁö ¾Ê°í ¹Ù±ùÂÊÀÇ ¿¹¿Ü 󸮱⿡°Ô ³Ñ±â´Â °ÍÀÌ ´õ Æí¸®ÇÏ´Ù. catch ºí·Ï¿¡¼­ ¿¹¿Ü¸¦ ´Ù½Ã ´øÁú ¶§´Â ¿¹¿Ü °´Ã¼¸¦ ÁöÁ¤ÇÒ ÇÊ¿ä¾øÀÌ throw ¸í·É¸¸ ´Üµ¶À¸·Î »ç¿ëÇÑ´Ù. ¹ÞÀº °´Ã¼¸¦ ±×´ë·Î ´Ù½Ã ³Ñ±â´Â °ÍÀ̹ǷΠ¿¹¿Ü °´Ã¼¸¦ ¸í½ÃÇÒ Çʿ䰡 ¾øÀ¸¸ç Á÷Á¢ ó¸®ÇÏÁö ¾ÊÀ¸¹Ç·Î catchÀÇ °ýÈ£¾È¿¡ ¿¹¿Ü °´Ã¼ÀÇ À̸§À» ÁÙ Çʿ䵵 ¾ø´Ù.

catch¿¡¼­ ¹Ù±ùÂÊ catch·Î Á¡ÇÁÇÒ ¶§´Â throw ¸í·É¸¸ ´Üµ¶À¸·Î »ç¿ëÇϴµ¥ ¸¸¾à ¹Ù±ùÂÊ¿¡ ÀûÀýÇÑ catch°¡ ¾øÀ¸¸é ÀÌ ¿¹¿Ü´Â µðÆúÆ® 󸮵Ǿî ÇÁ·Î±×·¥ÀÌ °­Á¦ Á¾·áµÈ´Ù. ÀÌ ¿¹Á¦´Â ÇÑ ÇÔ¼ö¾È¿¡¼­ try¸¦ Áßø½ÃÄÑ ´Ù¼Ò ¾ïÁö½º·¯¿î ¸éÀÌ Àִµ¥ ¿¹¿Ü¸¦ ´øÁö´Â ÇÔ¼ö³¢·Î ¼­·Î È£ÃâÇÏ´Ù º¸¸é ¿¹¿Ü ó¸® ºí·ÏÀ» ÁßÃ¸ÇØ¾ß ÇÏ´Â °æ¿ì°¡ ÀÖ´Ù.

 

 

¿¹¿Ü Ŭ·¡½º °èÃþ

¿¹¿Ü Ŭ·¡½ºµµ Ŭ·¡½ºÀ̹ǷΠ»ó¼ÓÇÒ ¼ö ÀÖ°í ´ÙÇü¼ºµµ ¼º¸³ÇÑ´Ù. ºñ½ÁÇÑ Á¾·ùÀÇ ¿¹¿Ü¶ó¸é ¿¹¿Ü Ŭ·¡½ºÀÇ °èÃþÀ» ±¸¼ºÇÏ¿© ¹Ýº¹µÇ´Â Äڵ带 ÁÙÀÏ ¼ö ÀÖ°í °¡»ó ÇÔ¼ö¿¡ ÀÇÇØ ¿¹¿Ü 󸮿¡µµ ´ÙÇü¼ºÀ» Àû¿ëÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¼ýÀÚ¸¦ ÀÔ·Â¹ÞµÇ 100 ÀÌÇÏÀÇ ¾çÀÇ Â¦¼ö¸¸ ÀԷ¹ÞÀ¸¸ç ³ª¸ÓÁö ¼ýÀÚ´Â ¸ðµÎ ¿¹¿Ü·Î ó¸®ÇÑ´Ù.

 

 #include <Turboc.h>

 

class ExNegative

{

protected:

     int Number;

 

public:

     ExNegative(int n) : Number(n) { }

     virtual void PrintError() {

          printf("%d´Â À½¼öÀ̹ǷΠÀ߸øµÈ °ªÀÔ´Ï´Ù.\n",Number);

     }

};

 

class ExTooBig : public ExNegative

{

public:

     ExTooBig(int n) : ExNegative(n) { }

     virtual void PrintError() {

          printf("%d´Â ³Ê¹« Å®´Ï´Ù. 100º¸´Ù ÀÛ¾Æ¾ß ÇÕ´Ï´Ù.\n",Number);

     }

};

 

class ExOdd : public ExTooBig

{

public:

     ExOdd(int n) : ExTooBig(n) { }

     virtual void PrintError() {

          printf("%d´Â Ȧ¼öÀÔ´Ï´Ù. ¦¼ö¿©¾ß ÇÕ´Ï´Ù.\n",Number);

     }

};

 

void main()

{

     int n;

 

     for (;;) {

          try {

              printf("¼ýÀÚ¸¦ ÀÔ·ÂÇϼ¼¿ä(³¡³¾ ¶§ 0) : ");

              scanf("%d",&n);

              if (n == 0) break;

              if (n < 0) throw ExNegative(n);

              if (n > 100) throw ExTooBig(n);

              if (n % 2 != 0) throw ExOdd(n);

 

              printf("%d ¼ýÀÚ´Â ±ÔÄ¢¿¡ ¸Â´Â ¼ýÀÚÀÔ´Ï´Ù.\n",n);

          }

          catch (ExNegative &e) {

              e.PrintError();

          }

     }

}

 

À½¼ö¿¡ ´ëÇÑ ¿¹¿Ü¸¦ ó¸®ÇÏ´Â ExNegative¸¦ °¡Àå ÃÖ»óÀ§ Ŭ·¡½º·Î µÎ°í À½¼ö¿¡ ´ëÇÑ ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ´Â PrintError¸¦ °¡»ó ÇÔ¼ö·Î Á¤ÀÇÇß´Ù. ±×¸®°í ÀÌ Å¬·¡½º¸¦ »ó¼ÓÇÏ¿© ExTooBigÀ̶ó´Â Ŭ·¡½º¸¦ Á¤ÀÇÇÏ¿© 100À» ÃʰúÇÏ´Â Å« ¼ö¿¡ ´ëÇÑ ¿¹¿Ü¸¦ ó¸®Çϵµ·Ï ÇßÀ¸¸ç ExTooBigÀ¸·ÎºÎÅÍ È¦¼ö ¿¹¿Ü¸¦ ó¸®ÇÏ´Â ExOdd¶ó´Â Ŭ·¡½º¸¦ Á¤ÀÇÇß´Ù. ·çÆ® ¿¹¿Ü Ŭ·¡½ºÀÎ ExNegative°¡ PrintError¸¦ °¡»ó ÇÔ¼ö·Î Á¤ÀÇÇßÀ¸¹Ç·Î ÆÄ»ý Ŭ·¡½ºÀÇ PrintErrorµµ ¸ðµÎ µ¿ÀûÀ¸·Î °áÇյǴ °¡»ó ÇÔ¼öÀÌ´Ù.

main¿¡¼­ ÀÌ ºñ½ÁÇÑ ¿¹¿ÜµéÀ» ó¸®ÇÒ ¶§´Â ¿¡·¯ ³»¿ë¿¡ ¸Â´Â ¿¹¿Ü °´Ã¼¸¦ »ý¼ºÇÏ¿© ´øÁö±â¸¸ ÇÏ¸é µÈ´Ù. catch´Â °¢ ¿¹¿Ü °´Ã¼¸¦ µû·Î ó¸®ÇÒ ÇÊ¿ä¾øÀÌ ·çÆ® ¿¹¿Ü °´Ã¼ÀÎ ExNegative¿¡ ´ëÇØ¼­¸¸ ó¸®ÇÏ¸é µÇ´Âµ¥ ¿Ö³ÄÇϸé ÀÌ Å¬·¡½º·ÎºÎÅÍ ÆÄ»ýµÈ Ŭ·¡½ºµéÀº ¸ðµÎ ExNegative¿Í IS A °ü°è¿¡ Àֱ⠶§¹®ÀÌ´Ù. catch¿¡´Â Àü´Þ¹ÞÀº ¿¹¿Ü °´Ã¼ e·ÎºÎÅÍ PrintError ÇÔ¼ö¸¸ È£ÃâÇϸé eÀÇ Å¸ÀÔ¿¡ ¸Â´Â °¡»ó ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ¾î ¿¹¿ÜÀÇ Á¾·ù¸¦ ÆÇº°ÇÏ´Â ÀÏÀº ½Å°æ¾²Áö ¾Ê¾Æµµ µÈ´Ù. e.PrintError°¡ ´ÙÇüÀûÀ¸·Î ¿¡·¯¸¦ ó¸®ÇÑ´Ù.

 

 

¿¹¿ÜÀÇ ºñ¿ë

ÀÌ»óÀ¸·Î C++ÀÇ ¿¹¿Ü ó¸® ±â´É¿¡ ´ëÇØ ¿¬±¸ÇØ ºÃ´Âµ¥ ¾ð¾î Â÷¿ø¿¡¼­ ¿¹¿Ü ó¸® ±¸¹®À» Áö¿øÇѴٴµ¥¼­ Å« Àǹ̸¦ ãÀ» ¼ö ÀÖ´Ù. ±×·¯³ª °íµµ·Î Á¤±³ÇÑ ÇÁ·ÎÁ§Æ®°¡ ¾Æ´Ñ ÇÑ ½Ç¹«¿¡¼­ ÀÌ ±â´ÉÀ» Àü¸éÀûÀ¸·Î »ç¿ëÇÏ´Â µ¥ ´ëÇØ¼­´Â ´Ù¼Ò ȸÀÇÀûÀ¸·Î Æò°¡ÇÏ´Â »ç¶÷µµ ÀÖ´Ù. ¿Ö³ÄÇϸé C++ÀÇ ¿¹¿Ü ó¸® ±â´ÉÀ» »ç¿ëÇϸé ÇÁ·Î±×·¥ÀÇ ¼º´ÉÀÌ ´«¿¡ ¶Û Á¤µµ·Î ´À·ÁÁö±â ¶§¹®ÀÌ´Ù. ÇÁ·Î±×·¥ÀÇ ¾ÈÁ¤¼º°ú À¯Áö, º¸¼öÀÇ ÆíÀǼºÀº Áõ°¡ÇÏÁö¸¸ ÇÁ·Î±×·¥ÀÌ ºñ´ëÇØÁö°í ´À·ÁÁö´Â ¹Ý´ë ±ÞºÎ¸¦ ½±»ç¸® ¹«½ÃÇÒ ¼ö´Â ¾ø´Ù.

¿¹¿Ü ó¸® ±¸¹®¿¡ ÀÇÇÑ ¼º´É ÀúÇÏ´Â »ó´çÇÑ Á¤µµÀε¥ ƯÈ÷ ½ºÅà µÇ°¨±â ±â´ÉÀº È£ÃâÇÑ ¸ðµç ½ºÅÃÀ» Á¤¸®ÇÏ´Â ´ë °ø»ç¸¦ ÇÑ´Ù´Â Á¡¸¸ ºÁµµ ¾ó¸¶³ª ¼º´É¿¡ Ãë¾àÇÒÁö »ó»óÀÌ °£´Ù.

±×·¯³ª try, catch¶ó´Â Ű¿öµå¸¦ ¾²´Â °Í¸¸À¸·Îµµ ÇÁ·Î±×·¥ÀÇ ¿ë·®Àº ¹«½Ã¸øÇÒ Á¤µµ·Î ºñ´ëÇØÁö´Â ¶Ç ´Ù¸¥ ¹®Á¦°¡ ÀÖ´Ù. ¿Ö³ÄÇÏ¸é ¹ß»ý ºóµµ°¡ ¾Æ¹«¸® Èñ¹ÚÇÏ´Ù ÇÏ´õ¶óµµ ¿¹¿Ü°¡ ¹ß»ýÇßÀ» ¶§ÀÇ Äڵ带 ¸ðÁ¶¸® ÀÛ¼ºÇØ ³Ö¾î¾ß Çϱ⠶§¹®ÀÌ´Ù. ±×·¡¼­ ¼º´ÉÀÌ ¾ÆÁÖ Áß¿äÇÏ´Ù¸é C++ÀÇ ¿¹¿Ü ó¸® ±â´ÉÀ» »ç¿ëÇÏÁö ¸»¾Æ¾ß Çϸç ÀüÅëÀûÀÎ if¹®À» »ç¿ëÇÏ´Â °ÍÀÌ ´õ ¹Ù¶÷Á÷ÇÒÁöµµ ¸ð¸¥´Ù.

C++ÀÇ ¿¹¿Ü ó¸® ±â´ÉÀº ¸ðµç ¸é¿¡¼­ ¿Ïº®ÇÏ´Ù°í ÇÒ ¼ö ¾ø°í ÄÄÆÄÀÏ·¯ÀÇ Áö¿øµµ ¾ÆÁ÷ ¹Ì¿Ï¼º ´Ü°èÀÌ´Ù. ¾Æ¹«¸® ÁÁ¾Æ º¸¿©µµ ÀüÅëÀûÀÎ if ¹®À» ¸ðÁ¶¸® ¿¹¿Ü ó¸® ±¸¹®À¸·Î ¹Ù²Ü ¼ö´Â ¾ø´Ù. »óȲ¿¡ µû¶ó ¿¹¿Ü¸¦ ó¸®ÇÏ´Â ¹æ¹ýÀº Ư¼öÇϱ⠶§¹®¿¡ ¸ðµç if¹®ÀÌ ¹«³­ÇÏ°Ô ¿¹¿Ü ó¸® ±¸¹®À¸·Î Àß º¯È¯µÇ´Â °ÍÀº ¾Æ´Ï´Ù. ÇÔ¼ö ³»ºÎ¿¡¼­ ¿¹¿Ü°¡ ¹ß»ýÇßÀ» ¶§ È£Ãâ¿øÀ» °Å²Ù·Î °Å½½·¯ ¿Ã¶ó°¡¸é¼­ ½ºÅÃÀ» Á¤¸®ÇÏ°í ¸ðµç °´Ã¼¸¦ ÆÄ±«ÇÏ´Â °ÍÀº ¸ÚÁø ±â´ÉÀ̱â´Â ÇÏ´Ù. ¾Æ¹«¸® ±íÀº ÇÔ¼ö¿¡¼­ ¿¹¿Ü°¡ ¹ß»ýÇß´õ¶óµµ À̸¦ Àâ¾Æ ³¾ ¼ö ÀÖÀ¸´Ï ¸»ÀÌ´Ù. ±×·¯³ª µ¿ÀûÀ¸·Î ÇÒ´çµÈ ¸Þ¸ð¸®´Â ±×·¸Áö ¸øÇѵ¥ ´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.

 

 #include <Turboc.h>

 

class SomeClass { };

 

void calc()

{

     SomeClass obj;

     char *p=(char *)malloc(1000);

 

     if (TRUE/*¿¹¿Ü ¹ß»ý*/) throw 1;

     free(p);

}

 

void main()

{

     try {

          calc();

     }

     catch(int) {

          puts("Á¤¼öÇü ¿¹¿Ü ¹ß»ý");

     }

}

 

calc°¡ ¿¹¿Ü¸¦ ÀÏÀ¸Å³ ¶§ Áö¿ª °´Ã¼ objÀÇ ÆÄ±«ÀÚ°¡ È£ÃâµÇ¾î ÇÊ¿äÇÑ Á¤¸®¸¦ ÇÑ´Ù. obj°¡ ¾Æ¹«¸® ¸¹Àº ¸Þ¸ð¸®¸¦ ¾²´õ¶óµµ ¹®Á¦µÇÁö ¾Ê´Â´Ù. ±×·¯³ª ¿¹¿Ü ¹ß»ýÀü¿¡ mallocÀ̳ª new·Î ÇÒ´çÇÑ ¸Þ¸ð¸®´Â ÇØÁ¦µÉ ±âȸ°¡ ¾ø¾î ¸Þ¸ð¸® ´©¼ö°¡ ¹ß»ýÇÒ °ÍÀÌ´Ù. ¸Þ¸ð¸® ÇÒ´ç ¿øÄ¢¿¡ ÀÇÇØ ÀÏ´Ü ÇÒ´çÇÑ ¸Þ¸ð¸®´Â ¸í½ÃÀûÀ¸·Î ÇØÁ¦ÇÏÁö ¾Ê´Â ÇÑ ÀÓÀǷΠȸ¼öÇÒ ¼ö ¾ø´Ù. throw´Â ³²Àº µÞºÎºÐÀÇ Äڵ带 ¹«½ÃÇÏ°í ¹«Á¶°Ç ¿¹¿Ü Çڵ鷯·Î Á¡ÇÁÇØ ¹ö¸®±â ¶§¹®ÀÌ´Ù.

¿¹¿Ü ó¸® ±â´ÉÀº ±âº»ÀûÀ¸·Î ¿¹¿Ü°¡ ¹ß»ýÇßÀ» ¶§ Àû´çÇÑ Çڵ鷯¸¦ ã¾Æ Á¡ÇÁÇÏ´Â ±â´ÉÀÌ´Ù. Á¦¾î¸¦ ¿Å±æ »ÓÀÌÁö ±× ÀÚü·Î ¿¹¿Ü¸¦ º¹±¸ÇÏÁö´Â ¸øÇÑ´Ù. catch¿¡¼­ ¾î¶² Á¶Ä¡¸¦ ÃëÇÑ ´ÙÀ½¿¡ try ºí·Ï ¾ÈÀ¸·Î ´Ù½Ã ¸®ÅÏÇÒ ¼ö´Â ¾ø´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.

 

 #include <Turboc.h>

 

void main()

{

     int i;

 

     try {

          printf("1~100»çÀÌÀÇ Á¤¼ö¸¦ ÀÔ·ÂÇϽÿÀ : ");

          scanf("%d",&i);

          if (i < 1 || i > 100) throw i;

          printf("ÀÔ·ÂÇÑ ¼ö = %d\n",i);

     }

     catch(int i) {

          printf("%d´Â 1~100 »çÀÌÀÇ Á¤¼ö°¡ ¾Æ´Õ´Ï´Ù.\n",i);

     }

}

 

1~100»çÀÌÀÇ Á¤¼ö¸¸ ÀԷ¹ޱâ À§ÇØ ±ÔÄ¢¿¡ ¾î±ß³­ º¯¼ö°¡ ÀÔ·ÂµÇ¸é ¿¹¿Ü ó¸®Çϵµ·Ï Çß´Ù. Àß µ¿ÀÛÇÏÁö¸¸ Ʋ¸° ÀÔ·ÂÀ» Àû¹ßÇÒ ¼ö ÀÖÀ» »ÓÀÌÁö ´Ù½Ã ÀÔ·ÂÇϵµ·Ï ÇÏÁö´Â ¸øÇÑ´Ù. ±×·¸°Ô ÇÏ·Á¸é whileÀ̳ª for µîÀÇ ·çÇÁ·Î °¨½Î Á¤È®ÇÑ °ªÀÌ ÀÔ·ÂµÉ ¶§±îÁö ¹Ýº¹ÇÏ´Â ¼ö¹Û¿¡ ¾ø´Ù. ±×·¸´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇÏ´Â °Í°ú´Â ¹«¾ùÀÌ ´Ù¸¥°¡?

 

for (;;) {

     printf("1~100»çÀÌÀÇ Á¤¼ö¸¦ ÀÔ·ÂÇϽÿÀ : ");

     scanf("%d",&i);

     if (i >= 1 && i <= 100) break;

     printf("%d´Â 1~100 »çÀÌÀÇ Á¤¼ö°¡ ¾Æ´Õ´Ï´Ù.\n",i);

}

printf("ÀÔ·ÂÇÑ ¼ö = %d\n",i);

 

ÀüÅëÀûÀÎ ·çÇÁ·Î ¼º°øÇÒ ¶§±îÁö ¹Ýº¹Çϵµ·Ï Çß´Ù. ¾îÂ÷ÇÇ ·çÇÁ°¡ ÇÊ¿äÇÏ´Ù¸é ±×³É if¹®À¸·Î Á¡°ËÇÏ´Â °ÍÀÌ ÈξÀ ´õ Æí¸®ÇÏ´Ù. ±íÀº È£Ã⠴ܰèÀÇ ÇÔ¼ö¶ó¸é ¿¹¿Ü ó¸® ±¸¹®ÀÇ ÀåÁ¡ÀÌ µå·¯³ªÁö¸¸ Àû¾îµµ ´ÜÀÏ ÇÔ¼ö³»¿¡¼­´Â if¹®ÀÌ ÈξÀ ´õ Àб⠽±°í ¼º´Éµµ ÁÁ´Ù. ÀÌ ¿Ü¿¡µµ ¿¹¿Ü 󸮴 ½ºÅà µÇ°¨±â Áß ÆÄ±«ÀÚ¿¡¼­ ¿¹¿Ü ¹ß»ý½ÃÀÇ ¾Ö¸ÅÇÔ, ¿¹¿Ü Çڵ鷯¿¡¼­ ¿¹¿Ü°¡ ¹ß»ýÇÑ ÁöÁ¡À» ¾Ë ¼ö ¾ø´Ù´Â ÇѰèµéÀÌ Á¸ÀçÇÑ´Ù. ±×¸®°í °ß°íÇÑ ÇÁ·Î±×·¥À» ¸¸µå´Â °Íµµ Áß¿äÇÏÁö¸¸ ¹ß»ý°¡´ÉÇÑ ¸ðµç ¿¹¿Ü¸¦ ÀÏÀÏÀÌ ´Ù ó¸®ÇÑ´Ù´Â °Íµµ »ç½Ç ºñÇö½ÇÀûÀÌ´Ù.

¾Æ¹«¸® ÁÁÀº ±â´ÉÀÌ¶óµµ ³²¹ßÇϸé ÁÁÁö ¾ÊÀ¸¹Ç·Î ²À ÇÊ¿äÇÑ °÷¿¡ Àß Á¶ÀýÇØ¼­ ¾²µµ·Ï ÇÏÀÚ. ºñÁÖ¾ó C++ÀÇ °æ¿ì ¿¹¿Ü ó¸® ±¸¹®À» »ç¿ëÇÒ °ÍÀÎÁö ¾Æ´ÑÁö¸¦ ÇÁ·ÎÁ§Æ® ¿É¼ÇÀ¸·Î ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï µÇ¾î Àִµ¥ ÀÌ ¿É¼ÇÀ» ²ô¸é ½ºÅÃÀ» µÇ°¨´Â ÄÚµå´Â »ý¼ºÇÏÁö ¾Ê´Â´Ù. ÄÄÆÄÀÏ·¯°¡ ÀÌ·± ¿É¼ÇÀ» Á¦°øÇÑ´Ù´Â °ÍÀº ¹«Á¶°ÇÀûÀÎ »ç¿ëÀÌ ÁÁ±â¸¸ ÇÑ °ÍÀÌ ¾Æ´Ï¶ó´Â ¹ÝÁõÀ̱⵵ ÇÏ´Ù.