¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇÏ¸é ¿¬»ê¹®À¸·Î °´Ã¼³¢¸® ¿¬»êÇÒ ¼ö ÀÖ´Â °Í°ú ¸¶Âù°¡Áö·Î °´Ã¼¸¦ Á¤¼ö³ª ½Ç¼öÇü°°Àº ±âº»ÇüÀ̳ª ´Ù¸¥ °´Ã¼¿Íµµ ¿¬»êÇÒ ¼ö ÀÖ´Ù. º¹¼Ò¼ö¿¡ ½Ç¼ö¸¦ ´õÇϰųª »¬ ¼ö ÀÖ°í ½Ã°£¿¡ Á¤¼öÇüÀÇ Ãʸ¦ ¿¬»êÇÒ ¼ö ÀÖ´Ù. »ç½Ç Ŭ·¡½º°¡ ŸÀÔÀ̹ǷΠ±»ÀÌ °´Ã¼¿Í ±âº»ÇüÀ» ±¸ºÐÇÒ Çʿ䰡 ¾øÀ¸¸ç ³í¸®ÀûÀ¸·Î Àǹ̸¸ ÀÖ´Ù¸é ¿À¹ö·ÎµùÇϱ⿡ µû¶ó¼ ÀÓÀÇ Å¸ÀÔÀÇ °´Ã¼³¢¸® ¿¬»ê °¡´ÉÇÏ´Ù.
´ÙÀ½ ¿¹Á¦´Â ½Ã°£ °´Ã¼¿¡ Á¤¼öÇüÀ¸·Î µÈ Ãʸ¦ ´õÇÑ´Ù. ¿¬»êÀÚ ÇÔ¼ö´Â ¸â¹ö·Î µÇ¾î ÀÖµç Àü¿ªÀ¸·Î µÇ¾î ÀÖµç ¾î·µç ÇÔ¼öÀ̹ǷΠÃëÇÒ ¼ö ÀÖ´Â ÀμöÀÇ Å¸ÀÔ¿¡ ±Ùº»ÀûÀÎ Á¦¾àÀÌ ¾øÀ¸¸ç ¿øÇϴ ŸÀÔÀÇ Àμö¸¦ ÃëÇϱ⸸ Çϸé ÀÓÀÇÀÇ ÇÇ¿¬»êÀÚ¸¦ ¹Þ¾ÆµéÀÏ ¼ö ÀÖ´Ù. ¹°·Ð ½Ã°£°ú Á¤¼öó·³ ¿¬»êÀÌ ½ÇÁúÀûÀÎ Àǹ̰¡ ÀÖ¾î¾ß ÇÑ´Ù.
|
¿¹ Á¦ : 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;
}
};
À̹ø¿¡´Â ¸â¹ö ¿¬»êÀÚ ÇÔ¼ö°¡ Á߰踦 ÇÏ´Â ¼ÀÀε¥ ÀÌ·¸°Ô ÇØµµ ¿ª½Ã Àß µ¿ÀÛÇÒ °ÍÀÌ´Ù. ½ÇÁ¦ ¿¬»êÀ» ÇÏ´Â ÄÚµå´Â ÇÑÂÊ¿¡¸¸ ÀÖÀ¸¸é µÇ°í ºÒÇÊ¿äÇÏ°Ô Áߺ¹½ÃŰÁö ¾Ê´Â °ÍÀÌ °ü¸®Çϱ⿡ À¯¸®ÇÏ´Ù. ¿ä¾àÇÏÀÚ¸é ŸÀÔÀÌ ´Ù¸¥ °´Ã¼³¢¸® ¿¬»êÇÒ ¶§´Â ±³È¯ ¹ýÄ¢ÀÌ ¼º¸³ÇÒ ¼ö ÀÖµµ·Ï Àü¿ª ¿¬»êÀÚ ÇÔ¼ö¸¦ Á¦°øÇØ¾ß Çϸç ÀÌ ÇÔ¼ö°¡ °´Ã¼ ³»ºÎÀÇ ¸â¹ö¸¦ ÀÐÀ» ¼ö ÀÖµµ·Ï ÇÁ·»µå ¼±¾ðÀ» ÀûÀýÈ÷ Ȱ¿ëÇØ¾ß ÇÑ´Ù.