28-2-³ª.°´Ã¼¿Í ±âº»ÇüÀÇ ¿¬»ê

¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇÏ¸é ¿¬»ê¹®À¸·Î °´Ã¼³¢¸® ¿¬»êÇÒ ¼ö ÀÖ´Â °Í°ú ¸¶Âù°¡Áö·Î °´Ã¼¸¦ Á¤¼ö³ª ½Ç¼öÇü°°Àº ±âº»ÇüÀ̳ª ´Ù¸¥ °´Ã¼¿Íµµ ¿¬»êÇÒ ¼ö ÀÖ´Ù. º¹¼Ò¼ö¿¡ ½Ç¼ö¸¦ ´õÇϰųª »¬ ¼ö ÀÖ°í ½Ã°£¿¡ Á¤¼öÇüÀÇ Ãʸ¦ ¿¬»êÇÒ ¼ö ÀÖ´Ù. »ç½Ç Ŭ·¡½º°¡ ŸÀÔÀ̹ǷΠ±»ÀÌ °´Ã¼¿Í ±âº»ÇüÀ» ±¸ºÐÇÒ Çʿ䰡 ¾øÀ¸¸ç ³í¸®ÀûÀ¸·Î Àǹ̸¸ ÀÖ´Ù¸é ¿À¹ö·ÎµùÇϱ⿡ µû¶ó¼­ ÀÓÀÇ Å¸ÀÔÀÇ °´Ã¼³¢¸® ¿¬»ê °¡´ÉÇÏ´Ù.

´ÙÀ½ ¿¹Á¦´Â ½Ã°£ °´Ã¼¿¡ Á¤¼öÇüÀ¸·Î µÈ Ãʸ¦ ´õÇÑ´Ù. ¿¬»êÀÚ ÇÔ¼ö´Â ¸â¹ö·Î µÇ¾î ÀÖµç Àü¿ªÀ¸·Î µÇ¾î ÀÖµç ¾î·µç ÇÔ¼öÀ̹ǷΠÃëÇÒ ¼ö ÀÖ´Â ÀμöÀÇ Å¸ÀÔ¿¡ ±Ùº»ÀûÀÎ Á¦¾àÀÌ ¾øÀ¸¸ç ¿øÇϴ ŸÀÔÀÇ Àμö¸¦ ÃëÇϱ⸸ Çϸé ÀÓÀÇÀÇ ÇÇ¿¬»êÀÚ¸¦ ¹Þ¾ÆµéÀÏ ¼ö ÀÖ´Ù. ¹°·Ð ½Ã°£°ú Á¤¼öó·³ ¿¬»êÀÌ ½ÇÁúÀûÀÎ Àǹ̰¡ ÀÖ¾î¾ß ÇÑ´Ù.

 

¿¹ Á¦ : TimePlusInt

#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 operator +(int s) const {

          Time R=*this;

 

          R.sec += s;

          R.min += R.sec/60;

          R.sec %= 60;

          R.hour += R.min/60;

          R.min %= 60;

          return R;

     }

};

 

void main()

{

     Time A(1,2,3);

 

     A.OutTime();

     A=A+5;

     A.OutTime();

}

 

operator + ¸â¹ö ¿¬»êÀÚ ÇÔ¼ö°¡ intÇüÀÇ s¸¦ Àμö·Î ¹Þ¾Æµé¿© ÀÌ °ªÀ» Àӽà °´Ã¼ RÀÇ sec¿¡ ´õÇÑ ÈÄ ÀÚ¸® ¿Ã¸² ó¸®Çϰí RÀ» ¸®ÅÏÇß´Ù. °´Ã¼³¢¸® ´õÇÒ ¶§´Â ½ÃºÐÃʸ¦ ¸ðµÎ ´õÇÏÁö¸¸ Á¤¼öÇüÀÇ ÃÊ¿Í ´õÇÒ ¶§´Â sec¸¸ ´õÇÏ´Â Á¤µµÀÇ Â÷À̹ۿ¡´Â ¾ø´Ù. ´Ü 1ÃÊ¶óµµ ´õÇÏ¸é ºÐ, ½Ãµµ ¿µÇâÀ» ¹ÞÀ» ¼ö ÀÖÀ¸¹Ç·Î ÀÚ¸® ¿Ã¸² 󸮴 »ý·«ÇÒ ¼ö ¾ø´Ù. ÀÌ ¿¹Á¦´Â ¾ÆÁÖ Á¤»óÀûÀ¸·Î Àß µ¿ÀÛÇÑ´Ù.

 

1:2:3

1:2:8

 

1:2:3¿¡ 5Ãʸ¦ ´õÇϸé 1:2:8Ãʰ¡ µÈ´Ù. A=A+5; ¿¬»ê¹®ÀÌ ½Ã°£ °´Ã¼¿Í Á¤¼ö¿ÍÀÇ µ¡¼ÀÀ» ÈǸ¢ÇÏ°Ô ¿¬»êÇÑ °ÍÀÌ´Ù. ±×·¸´Ù¸é A=5+A;ÀÇ °æ¿ì´Â ¾î¶³±î? µ¡¼ÀÀº ±³È¯¹ýÄ¢ÀÌ ¼º¸³ÇÏ´Â ¿¬»êÀ̹ǷΠA+5°¡ °¡´ÉÇÏ´Ù¸é ´ç¿¬È÷ 5+Aµµ °¡´ÉÇØ¾ß ÇÑ´Ù. mainÀÇ A=A+5; ¿¬»ê¹®À» A=5+A;·Î ¹Ù²ã ³õ°í ÄÄÆÄÀÏÇØ º¸ÀÚ. TimeÇüÀ» Àμö·Î ÃëÇÏ´Â + ¿¬»êÀÚ´Â Á¤ÀǵǾî ÀÖÁö ¾Ê´Ù´Â ¿¡·¯°¡ ¹ß»ýÇÒ °ÍÀÌ´Ù. ÄÄÆÄÀÏ·¯´Â 5+A¶ó´Â ¿¬»ê¹®À» ¸¸³µÀ» ¶§ ´ÙÀ½ µÎ ÇÔ¼ö Áß Çϳª¸¦ ã´Â´Ù.

 

const Time int::operator +(Time);

const Time operator +(int, Time);

 

À§ÂÊ ÇÔ¼ö´Â ¸â¹ö ¿¬»êÀÚ ÇÔ¼öÀε¥ Áº¯ÀÌ 5¶ó´Â intÇü »ó¼öÀ̹ǷΠint Ŭ·¡½º¿¡ Á¤ÀÇµÈ ¸â¹ö ÇÔ¼öÀ̸ç TimeÇü °´Ã¼¸¦ Àμö·Î ÃëÇÑ´Ù. ÀÌ·± ÇÔ¼ö´Â int Çü¿¡ Á¤ÀǵǾî ÀÖÁö ¾ÊÀ¸¸ç Á÷Á¢ ¸¸µå´Â °Íµµ ºÒ°¡´ÉÇÏ´Ù. int ÇüÀº ½Ã½ºÅÛ ³»Àå ŸÀÔÀ̱⠶§¹®¿¡ »ç¿ëÀÚ°¡ ÀÌ Å¬·¡½º¸¦ ¸¶À½´ë·Î È®ÀåÇÒ ¼ö ¾ø´Ù. ¾Æ·¡ÂÊ ÇÔ¼ö´Â Àü¿ª ¿¬»êÀÚ ÇÔ¼öÀε¥ int¿Í TimeÇü °´Ã¼¸¦ Àμö·Î ÃëÇÑ´Ù. ÀÌ ÇÔ¼öµµ ¾ÆÁ÷ ¸¸µé¾îÁ® ÀÖÁö´Â ¾ÊÁö¸¸ ¿øÇÑ´Ù¸é Á÷Á¢ ¸¸µé ¼ö´Â ÀÖ´Ù. ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ ´ÙÀ½ ÇÔ¼ö¸¦ Ãß°¡ÇØ º¸ÀÚ.

 

const Time operator +(int s, const Time &T)

{

     Time R=T;

 

     R.sec=T.sec + s;

     R.min += R.sec/60;

     R.sec %= 60;

     R.hour += R.min/60;

     R.min %= 60;

     return R;

}

 

Á¤¼öÇü º¯¼ö s¿Í TimeÇü °´Ã¼ T¸¦ Àμö·Î Àü´Þ¹Þ¾Æ µÎ °´Ã¼¸¦ ´õÇÑ´Ù. ÀÌ ÇÔ¼ö°¡ Á¤ÀǵǾî ÀÖÀ¸¸é ÄÄÆÄÀÏ·¯´Â 5+A ¿¬»ê¹®À» ó¸®ÇÒ ¼ö ÀÖÁö¸¸ ÄÄÆÄÀÏÇØ º¸¸é ´õ ¸¹Àº ¿¡·¯°¡ ¹ß»ýÇÒ °ÍÀÌ´Ù. ¿Ö³ÄÇϸé Àü¿ª ÇÔ¼ö¿¡¼­ Time Ŭ·¡½ºÀÇ ÇÁ¶óÀ̺ñÆ® ¸â¹ö¸¦ ¾×¼¼½ºÇϰí Àֱ⠶§¹®ÀÌ´Ù. ÀÌ »óȲÀ» ÇØ°áÇÏ´Â ¿©·¯ °¡Áö ¹æ¹ýµéÀ» »ý°¢ÇØ º¼ ¼ö ÀÖ´Ù.

 

¨ç Àü¿ª ¿¬»êÀÚ ÇÔ¼ö¸¦ ¾Æ¿¹ »èÁ¦ÇØ ¹ö¸®°í Ŭ·¡½º ¼³¸í¼­³ª ¼Ò½º»óÀÇ ÁÖ¼®¿¡ A+5 ÇüÅ·θ¸ È£ÃâÇÒ ¼ö ÀÖÀ¸¸ç 5+A µûÀ§·Î È£ÃâÇÏÁö ¸»¶ó°í ºÐ¸íÈ÷ ½á ³õ´Â´Ù. ¸¸¾à 5+A °°Àº °Ç¹æÁø ¿¬»ê¹®À» ¾µ °æ¿ì ¿¡·¯¸¦ Àܶà ÅäÇØ ¹ö¸®°Ú´Ù°í Çù¹ÚÇÒ ¼öµµ ÀÖ´Ù. ¾î·µç °´Ã¼¿Í Á¤¼öÀÇ µ¡¼À ¹æ¹ýÀº Á¦°øÇÏ´Â ¼ÀÀÌÁö¸¸ »ç¿ëÀÚµéÀº A+5°¡ µÇ¸é 5+Aµµ ´ç¿¬È÷ µÉ °ÍÀ̶ó°í »ý°¢Çϱ⠶§¹®¿¡ ÀϹÝÀûÀÎ ±â´ë¿¡ ºÎÀÀÇÏÁö ¸øÇÏ´Â ¹æ¹ýÀÌ´Ù.

¨è Àü¿ª ¿¬»êÀÚ ÇÔ¼ö°¡ TimeÀÇ ¸â¹ö¸¦ ÀÚÀ¯·Ó°Ô ÀÐÀ» ¼ö ÀÖµµ·Ï ÇÁ¶óÀ̺ñÆ® ¸â¹ö¸¦ ¸ðµÎ °ø°³ÇÑ´Ù. ÀÌ·¸°Ô µÇ¸é ÀÏ´Ü Àß µ¿ÀÛÇϱâ´Â ÇϰÚÁö¸¸ ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇϱâ À§ÇØ Á¤º¸ ÀºÆó¸¦ Æ÷±âÇÏ´Â ²ÃÀÌ µÇ¹Ç·Î OOPÀÇ ¼³°è ¿øÄ¢¿¡ ÇÑÂü ¾î±ß³ª°Ô µÈ´Ù. °áÄÚ ÁÁÀº ¹æ¹ýÀÌ ¾Æ´Ï´Ù.

¨é ÇÁ¶óÀ̺ñÆ® ¸â¹ö´Â ºñ°ø°³·Î °è¼Ó À¯ÁöÇ쵂 ÀÌ ¸â¹öµéÀ» ÀÐ°í ¾²´Â °ø°³ ÇÔ¼ö¸¦ ¸ðµÎ ÀÛ¼ºÇϰí Àü¿ª ¿¬»êÀÚ ÇÔ¼ö´Â ÀÌ ¾×¼¼½º ÇÔ¼öµéÀ» ÅëÇØ ¸â¹ö¸¦ ¾×¼¼½ºÇϵµ·Ï ÇÑ´Ù. ¾×¼¼½ºÇÒ Çʿ䰡 ÀÖ´Â ¸â¹öµé¿¡ ´ëÇØ ÀÏÀÏÀÌ Get, Set ÇÔ¼ö¸¦ ¸¸µé¾î¾ß ÇϹǷΠ¹«Ã´ ¹ø°Å·Ó´Ù.

 

ÀÌ»óÀÇ ¼¼ °¡Áö ¹æ¹ýÀº ÀÏ´Ü ¹®Á¦¸¦ ÇØ°áÇϱâ´Â ÇϰÚÁö¸¸ ¸ðµÎ ´Ù Á¦´ë·Î µÈ ¹æ¹ýÀ̶ó ÇÒ ¼ö ¾ø´Ù. ÀÌ·± ¾îÁݨÀº ¹æ¹ýº¸´Ù ÈξÀ ´õ »ó½ÄÀûÀÌ°í ¾ÈÀüÇÏ°í Æí¸®ÇÑ ¹æ¹ýÀÌ ÀÖÀ¸´Ï À̰ÍÀÌ ¹Ù·Î C++ ¹®¹ýÀÌ Á¦°øÇÏ´Â ÇÁ·»µå ÁöÁ¤ÀÌ´Ù. ÇÁ·»µå´Â º¸È£°¡ ÇÊ¿äÇÑ ¸â¹ö¸¦ ºñ°ø°³ÀÎä·Î À¯ÁöÇϸ鼭 ƯÁ¤ÇÑ ÇÔ¼ö³ª Ŭ·¡½º¿¡ ´ëÇØ¼­¸¸ ¿¹¿Ü¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ¹®¹ýÀûÀÎ ÀåÄ¡Àε¥ ¹Ù·Î ÀÌ·² ¶§ ¾²±â À§ÇØ ¸¸µé¾î ³õÀº °ÍÀÌ´Ù. ÇÁ·»µåÀÇ °¡Àå ½Ç¿ëÀûÀΠȰ¿ë¿¹°¡ ¹Ù·Î Àü¿ª ¿¬»êÀÚ ÇÔ¼öÀÌ´Ù. Àü¿ª operator + ¿¬»êÀÚ¸¦ Time Ŭ·¡½ºÀÇ ÇÁ·»µå ÇÔ¼ö·Î ÁöÁ¤ÇØ º¸ÀÚ.

 

class Time

{

     friend const Time operator +(int s, const Time &T);

     ....

 

ÀÌ ¼±¾ðÀ» Ãß°¡Çϸé Á¦´ë·Î ÄÄÆÄÀϵǸç A+5³ª 5+A ¸ðµÎ Àß ½ÇÇàµÈ´Ù. ¾çÂÊÀÇ ¿ä±¸¸¦ ó¸®ÇÏ´Â ÇÔ¼ö°¡ ¸ðµÎ ÀÛ¼ºµÇ¾î Àֱ⠶§¹®¿¡ ÄÄÆÄÀÏ·¯°¡ ¿ä±¸ Á¶°Ç¿¡ ¸Â´Â ÇÔ¼ö¸¦ ÀûÀýÇÏ°Ô Ã£¾Æ È£ÃâÇÒ °ÍÀÌ´Ù. ±×·±µ¥ ¾ÆÁ÷±îÁöµµ ºÒ¸¸ÀÌ Á¶±Ý Àִµ¥ °ÅÀÇ ¶È°°Àº µ¿ÀÛÀ» ÇÏ´Â ÇÔ¼ö°¡ µÎ ¹ø ¹Ýº¹µÈ´Ù´Â Á¡ÀÌ´Ù. µÎ ÇÔ¼ö´Â ÀμöÀÇ ¼ø¼­¸¸ ´Ù¸¦ »Ó ÄÚµå´Â °ÅÀÇ µ¿ÀÏÇϹǷΠÇÔ¼ö ÀÚü´Â ÇÊ¿äÇÏÁö¸¸ ¶È°°Àº Äڵ带 ºÒÇÊ¿äÇÏ°Ô ¹Ýº¹ÇÒ ÇÊ¿ä´Â ¾ø´Ù. Àü¿ª ¿¬»êÀÚ ÇÔ¼ö¸¦ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇØ º¸ÀÚ.

 

const Time operator +(int s, const Time &T)

{

     return T+s;

}

 

Àμö·Î Àü´Þ¹ÞÀº s, TÀÇ ¼ø¼­¸¦ ¹Ù²ã T+s ¿¬»ê¹®À» ¸®ÅÏÇÏ¸é ¸â¹ö ¿¬»êÀÚ ÇÔ¼ö°¡ ÀÌ ¿¬»êÀ» ´ë½Å ó¸®ÇÒ °ÍÀÌ´Ù. ÀÌ °æ¿ì Àü¿ª ¿¬»êÀÚ ÇÔ¼ö´Â ÀμöÀÇ ¼ø¼­¸¦ ¹Ù²ã ¸â¹ö ¿¬»êÀÚ ÇÔ¼ö¸¦ È£ÃâÇÏ´Â Áß°è ¿ªÇÒ¸¸ ÇÏ¸ç ¾ÆÁÖ Á¤»óÀûÀ¸·Î Àß ½ÇÇàµÈ´Ù. ÀÌ·¸°Ô µÇ¸é Àü¿ª ¿¬»êÀÚ ÇÔ¼ö°¡ TimeÀÇ ¸â¹ö¸¦ Á÷Á¢ ¾×¼¼½ºÇÏÁö ¾ÊÀ¸¹Ç·Î ÀÌ ÇÔ¼ö¿¡ ´ëÇÑ ÇÁ·»µå ÁöÁ¤Àº »ý·«ÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ÀÌ ÇÔ¼ö´Â ¿©ÀüÈ÷ Time°ú °ü·ÃµÈ ÇÔ¼öÀ̹ǷΠÇÁ·»µå ÁöÁ¤À» À¯ÁöÇÏ´Â °Íµµ º° ¹®Á¦´Â ¾ø´Ù.

Àü¿ª ¿¬»êÀÚ ÇÔ¼ö°¡ Á߰踦 ÇÏ´Â ¹æ¹ý ´ë½Å ¸â¹ö ¿¬»êÀÚ ÇÔ¼ö°¡ Á߰踦 ÇÒ ¼öµµ ÀÖ´Ù. Àü¿ª ¿¬»êÀÚ ÇÔ¼öÀÇ º»Ã¼¸¦ ±×´ë·Î À¯ÁöÇÑä·Î ¸â¹ö ¿¬»êÀÚ ÇÔ¼ö¸¸ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇØ º¸ÀÚ.

 

class Time

{

     ....

     const Time operator +(int s) const {

          return s+*this;

     }

};

 

À̹ø¿¡´Â ¸â¹ö ¿¬»êÀÚ ÇÔ¼ö°¡ Á߰踦 ÇÏ´Â ¼ÀÀε¥ ÀÌ·¸°Ô ÇØµµ ¿ª½Ã Àß µ¿ÀÛÇÒ °ÍÀÌ´Ù. ½ÇÁ¦ ¿¬»êÀ» ÇÏ´Â ÄÚµå´Â ÇÑÂÊ¿¡¸¸ ÀÖÀ¸¸é µÇ°í ºÒÇÊ¿äÇÏ°Ô Áߺ¹½ÃŰÁö ¾Ê´Â °ÍÀÌ °ü¸®Çϱ⿡ À¯¸®ÇÏ´Ù. ¿ä¾àÇÏÀÚ¸é ŸÀÔÀÌ ´Ù¸¥ °´Ã¼³¢¸® ¿¬»êÇÒ ¶§´Â ±³È¯ ¹ýÄ¢ÀÌ ¼º¸³ÇÒ ¼ö ÀÖµµ·Ï Àü¿ª ¿¬»êÀÚ ÇÔ¼ö¸¦ Á¦°øÇØ¾ß Çϸç ÀÌ ÇÔ¼ö°¡ °´Ã¼ ³»ºÎÀÇ ¸â¹ö¸¦ ÀÐÀ» ¼ö ÀÖµµ·Ï ÇÁ·»µå ¼±¾ðÀ» ÀûÀýÈ÷ Ȱ¿ëÇØ¾ß ÇÑ´Ù.