¿¬»êÀÚ ÇÔ¼ö
±âº»ÇüÀÇ ¿¬»êÀÚ
¿¬ÀÚÀÚ¸¦ ¿À¹ö·ÎµùÇÒ ¼ö ÀÖ´Ù´Â °ÍÀº 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();
}
»ç½Ç ¿¬»êÀÚ´Â ¸ð¾çÀÌ Á» ƯÀÌÇÑ ÇÔ¼ö¶ó°í º¼ ¼ö Àִµ¥ Àμö¸¦ ÃëÇÑ´Ù´Â °Í°ú ¿¬»ê °á°ú¸¦ ¸®ÅÏÇÑ´Ù´Â Á¡¿¡¼ ÇÔ¼ö¿Í °øÅëÀûÀÌ´Ù. ¿¬»êÀÚ ÇÔ¼öÀÇ À̸§Àº Ű¿öµå 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) ¿À¹ö·ÎµùµÈ ¿¬»êÀÚÀÇ
ÇÇ¿¬»êÀÚ Áß Àû¾îµµ Çϳª´Â »ç¿ëÀÚ
int operator +(int a, int b)
{
....
}
ÀÌ ÇÔ¼ö´Â
»ç½Ç À§¿¡¼ º¸ÀÎ µÎ °³ÀÇ Á¤¼ö¸¦ ´õÇÏ´Â ¿¬»êÀÚ´Â ½Ã½ºÅÛ¿¡ ÀÌ¹Ì Á¸ÀçÇÑ´Ù.
¿À¹ö·ÎµùÀ̶õ ÀμöÀÇ °³¼ö³ª ŸÀÔÀÌ ´Þ¶ó¾ß ÇϹǷΠÀ§ ¿¬»êÀÚ´Â ¿À¹ö·ÎµùÀÇ ´ë»óÀÌ µÉ ¼öµµ ¾ø´Ù. ¿À¹ö·ÎµùÀ̶õ
ÀÌ¹Ì Á¸ÀçÇÏ´Â ÇÔ¼öÀÇ ±â´ÉÀ» ¹Ù²Ù´Â °ÍÀÌ ¾Æ´Ï¶ó ŸÀÔ¿¡ µû¶ó ´Ù¸£°Ô µ¿ÀÛÇÏ´Â ÇÔ¼ö¸¦ Áߺ¹ Á¤ÀÇÇÏ´Â °ÍÀ̹ǷΠ±âº» ŸÀÔ¿¡ ´ëÇÑ ¿¬»êÀÚ´Â ¸¸µé ¼ö
¾ø´Â °ÍÀÌ´Ù.
°Á¦ÀûÀÎ ±ÔÄ¢Àº ¾Æ´ÏÁö¸¸ ¿¬»êÀÚÀÇ ³í¸®Àû Àǹ̴ °¡±ÞÀû À¯ÁöÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. + ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇÑ´Ù¸é ¾î¶² Ŭ·¡½º¿¡ ´ëÇØ¼¶óµµ µ¡¼ÀÀÇ Àǹ̸¦
°¡Áö´Â ¿¬»êÀ» ÇÏ´Â °ÍÀÌ ÁÁ´Ù. ±×·¡¾ß ¿¬»êÀÚ¿¡ ´ëÇÑ »ç¿ëÀÚµéÀÇ ±âÁ¸ »ó½ÄÀ» º¸È£ÇÒ ¼ö ÀÖ´Ù. + ¿¬»êÀÚ¸¦ ´õÇϱâ¿Í´Â ÀüÇô »ó°ü¾ø´Â ´Ù¸¥ ¿¬»êÀ¸·Î ¿À¹ö·ÎµùÇØ
¹ö¸®¸é ÀÌ °´Ã¼¸¦ »ç¿ëÇÏ´Â »ç¶÷Àº È¥¶õ½º·¯¿öÇÒ °ÍÀÌ´Ù. ±×·¯³ª ÀÌ ±ÔÄ¢Àº ¾îµð±îÁö³ª ±ÇÀå »çÇ×ÀÏ »ÓÀ̹ǷÎ
ºÒ°¡ÇÇÇÒ °æ¿ì´Â ÁöŰÁö ¾Ê¾Æµµ »ó°ü¾ø´Ù.
¿¹¸¦ µé¾î Ç¥ÁØ ÀÔÃâ·Â ½ºÆ®¸²ÀÎ 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°¡ ¾øÀ¸¸é ÀÌ ¿¹¿Ü´Â µðÆúÆ® 󸮵Ǿî ÇÁ·Î±×·¥ÀÌ °Á¦
Á¾·áµÈ´Ù. ÀÌ ¿¹Á¦´Â ÇÑ ÇÔ¼ö¾È¿¡¼ 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++ÀÇ °æ¿ì
¿¹¿Ü ó¸® ±¸¹®À» »ç¿ëÇÒ °ÍÀÎÁö ¾Æ´ÑÁö¸¦ ÇÁ·ÎÁ§Æ® ¿É¼ÇÀ¸·Î ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï µÇ¾î Àִµ¥ ÀÌ ¿É¼ÇÀ» ²ô¸é ½ºÅÃÀ»
µÇ°¨´Â ÄÚµå´Â »ý¼ºÇÏÁö ¾Ê´Â´Ù. ÄÄÆÄÀÏ·¯°¡ ÀÌ·± ¿É¼ÇÀ» Á¦°øÇÑ´Ù´Â °ÍÀº ¹«Á¶°ÇÀûÀÎ »ç¿ëÀÌ ÁÁ±â¸¸ ÇÑ
°ÍÀÌ ¾Æ´Ï¶ó´Â ¹ÝÁõÀ̱⵵ ÇÏ´Ù.