[C++]2ºÎ°­ÁÂ(38)<--¿¬»êÀÚ ¿À¹ö·Îµù(Àμö¿Í ÇÇ¿¬ÀÚÀÇ °³¼ö)





#include <stdio.h>
#include <iostream.h>
class Time {
protected:
 int hour,min,sec;
public:
 void settime(int h,int m,int s) {
   hour=h;
   min=m;
   sec=s;
   return;
   }
 void outtime();
 Time operator1+(Time);    // ½Ã°£³¢¸® ´õÇÏ´Â + ¿¬»êÀÚÇÔ¼ö
 };
Time Time::operator +(Time T)    // + ¿¬»êÀÚ ÇÔ¼öÀÇ Á¤ÀÇ
{
sec +=T.sec;                   // code´Â addTime ÇÔ¼ö¿Í ¶È°°´Ù.
min +=T.min;
hour+=T.hour;
if (sec>60) {
 min++;
 sec-=60;
 }
if (min>60) {
 hour++;
 min-=60;
 }
hour %= 12;
return (*this);
}
void Time::outtime(void)
{
cout << endl << "time is " << hour << " hour " << min<<  "
minute " << sec << " second." << endl;
}
void main()
{
Time a,b;
a.settime(2,12,23);
b.settime(11,10,40);
a=a+b;                                //   ½Ã°£³¢¸® ´õÇÔ
a.outtime();
}

½ÇÇà °á°ú´Â time is 1 hour 23 minute 3 second.ÀÌ´Ù. ¾Õ¿¡ ¿¹Á¦¿Í ´Ù¸¥ Á¡
Àº ¸â¹ö ÇÔ¼ö addTimeÀÇ À̸§ÀÌ operator +·Î  ¹Ù²î¾ú´Ù´Â °ÍÀ̸ç addTimeÀ»
È£ÃâÇÑ ºÎºÐÀÌ a=a+b·Î ¹Ù²î¾ú´Ù´Â °ÍÀÌ´Ù. ¸â¹ö ÇÔ¼ö addTimeÀÌ °¡Áø ±â´ÉÀ»
±×´ë·Î operator +¶ó´Â À̸§À¸·Î ´Ù½Ã Á¤ÀÇÇÏ°í ÀÖÀ¸¸ç À̶§ "operator +"¶õ
+ ¿¬»êÀÚ¸¦ ¸»ÇÑ´Ù.
Áï, + ¿¬»êÀÚÀÇ ±â´ÉÀ» Time Ŭ·¡½º¿Í ÇÔ²² ¾²ÀÏ ¶§´Â addTimeÀÌ °¡Áö°í ÀÖ´ø
±â´ÉÀ¸·Î ¹Ù²Û´Ù´Â ¶æÀÌ´Ù. ÀÌ°ÍÀÌ ¹Ù·Î ¿¬»êÀÚ ¿À¹ö·ÎµùÀ̸ç ÀÌÈĺÎÅÍ TimeÇü
ÀÇ °´Ã¼¿Í ÇÔ²² ¾²ÀÌ´Â + ¿¬»êÀÚ´Â ½Ã°£³¢¸® ´õÇÏ´Â ±â´ÉÀ» ÇÏ°Ô µÈ´Ù. ¹°·Ð
Time °´Ã¼ ¹Û¿¡¼­ ¾²ÀÌ´Â + ¿¬»êÀÚ´Â º»·¡ÀÇ Àǹ̴ë·Î »ç¿ëµÈ´Ù. 2+3À̳ª 53+2
3 µî¿¡ »ç¿ëµÈ + ¿¬»êÀÚ´Â Time °´Ã¼¿Í ÇÔ²² »ç¿ëµÈ °ÍÀÌ ¾Æ´Ï¹Ç·Î º»·¡ÀÇ »ê
¼ú ¿¬»êÀ» ÇàÇÏ¸ç °¢°¢ 5¿Í 76ÀÇ ¿¬»ê °á°ú¸¦ ¸®ÅÏÇÒ °ÍÀÌ´Ù.
¿À¹ö·ÎµùµÈ + ¿¬»êÀÚ´Â ÀÌÁ¦ ½Ã°£À» ³ªÅ¸³»´Â Ŭ·¡½º TimeÀÇ Æ¯¼º¿¡ ¸Â°Ô ½Ã
°£³¢¸® µ¡¼ÀÀ» ÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» °¡Áö°Ô µÇ¾ú´Ù. À̶§ ¿À¹ö·ÎµùµÈ + ¿¬»êÀÚ´Â
Àμö¸¦ ÃëÇÏ¸ç ³»ºÎÀûÀÎ ¿¬»ê °úÁ¤ÀÇ °á°ú¸¦ ¸®ÅÏ°ªÀ¸·Î ¹Ý³³ÇÑ´Ù´Â ¸é¿¡¼­ ÇÔ
¼ö¿Í µ¿ÀÏÇÑ ÀÚ°ÝÀ» °¡Áö°Ô µÇ¸ç ±×·¡¼­ ¿¬»êÀÚ ÇÔ¼ö(operator function)¶ó°í
ºÎ¸¥´Ù. a=a+b;¸¦ a=a.operator +(b);¶ó´Â ÇÔ¼ö È£Ãâ Çü½ÄÀ¸·Î ¹Ù²Ù¾îµµ ¸¶Âù
°¡Áö·Î µ¿ÀÛÇÑ´Ù. °°Àº ±¸¹®ÀÌµÇ Ç¥Çö¸¸ ´Ù¸¦ »ÓÀÌ´Ù. ¾îÂ÷ÇÇ ÄÄÆÄÀÏ·¯´Â c=a+
b;¶ó´Â ¿¬»ê½ÄÀ» ¸¸³ª¸é a °´Ã¼ÀÇ ¸â¹ö·Î Á¤ÀǵǾî ÀÖ´Â ¿¬»êÀÚ ¸â¹ö ÇÔ¼ö¸¦
È£ÃâÇÏ°Ô µÈ´Ù. ¿¬»êÀÚ ÇÔ¼ö¸¦ Á¤ÀÇÇÏ´Â ÀϹÝÀû ¹®¹ýÀº ´ÙÀ½°ú °°´Ù.

¸®ÅÏ°ª ¼Ò¼Ó class::operator ¿¬»êÀÚ(Àμö ¸®½ºÆ®)
{
ÇÔ¼öÀÇ º»Ã¼;
}
¿¹)
int Time::operator +(int a) { }
MyClass Date::operator *(MyClass M) { }


´Ù.Àμö¿Í ÇÇ¿¬»êÀÚÀÇ °³¼ö

¿¬»êÀÚ ÇÔ¼ö¸¦ Á¤ÀÇÇÒ ¶§ ÁÖÀÇÇÒ °ÍÀº ÇÇ¿¬»êÀÚÀÇ °³¼ö¿Í ¿¬»êÀÚ ÇÔ¼öÀÇ Àμö
ÀÇ °³¼öÀÌ´Ù. À§¿¡¼­ Á¤ÀÇµÈ +¿¬»êÀÚ´Â ½Ã°£°ú ½Ã°£³¢¸® ´õÇÏ´Â ¿¬»êÀÚÀÌ¸ç ¿¬
»ê¿¡ ÇÊ¿äÇÑ ÇÇ¿¬»êÀÚ´Â µÎ °³ÀÌÁö¸¸ ÃëÇÏ´Â ÀμöÀÇ °³¼ö´Â Çϳª»ÓÀÌ´Ù. ±× ÀÌ
À¯´Â ¿¬»êÀÚ ÇÔ¼ö°¡ Ŭ·¡½º¿¡ ¼Ò¼ÓµÈ ¸â¹ö ÇÔ¼öÀ̱⠶§¹®ÀÌ´Ù. Ŭ·¡½º¿¡ ¼Ò¼Ó
µÈ ¸â¹ö ÇÔ¼ö°¡ ½ÇÇàµÇ±â À§Çؼ­´Â ¹Ýµå½Ã °´Ã¼°¡ Á¤ÀǵǾî ÀÖ¾î¾ß ÇÏ¸ç °´Ã¼
¿¡ ÀÇÇØ È£ÃâµÇ¾î¾ß ÇÑ´Ù.
µû¶ó¼­ ¿¬»êÀÚ ÇÔ¼ö´Â ÀÚ½ÅÀ» È£ÃâÇÑ °´Ã¼ ±× ÀÚü¿Í È£Ãâ½Ã Àü´ÞµÈ Àμö¸¦
ÇÇ¿¬»êÀÚ·Î ÃëÇÏ°Ô µÈ´Ù. ¿¬»êÀÚ¸¦ È£ÃâÇÏ´Â °´Ã¼ ±× ÀÚü°¡ ÇϳªÀÇ ÇÇ¿¬»êÀÚ
°¡ µÇ¾îÁֱ⠶§¹®¿¡ ¿¬»êÀÚ ÇÔ¼ö´Â ÀÚ½ÅÀÌ ÃëÇÏ´Â °íÀ¯ÀÇ ÇÇ¿¬»êÀÚ °³¼öº¸´Ù
Çϳª°¡ ´õ ÀûÀº °³¼ö ¸¸Å­¸¸ Àμö·Î ¿ä±¸ÇÏ°Ô µÈ´Ù.
a=a+b¶ó´Â ¿¬»ê½Ä¿¡¼­ + ¿¬»êÀÚ´Â µÎ °³ÀÇ ÇÇ¿¬»êÀÚ a¿Í b¸¦ ¿ä±¸ÇÏÁö¸¸ ¸·»ó
+ ¿¬»êÀÚ ÇÔ¼öÀÇ Á¤ÀÇ ºÎºÐÀ» º¸¸é TimeÇüÀÇ °´Ã¼ T Çϳª¸¸À» Àμö·Î ÃëÇÑ´Ù.
ÇÇ¿¬»êÀÚ°¡ Çϳª¹Û¿¡ ¾ø´Â ¿¬»êÀÚÀÇ °æ¿ì´Â È£ÃâÇÏ´Â °´Ã¼¸¸ ÇÇ¿¬»êÀÚ·Î °¡Áö
°Ô µÇ¹Ç·Î º°µµÀÇ Àμö°¡ ´õ ÇÊ¿ä¾ø´Ù. ½Ã°£À» 1ÃÊ Áõ°¡½ÃÅ°´Â ++ ¿¬»êÀÚ¸¦ Á¤
ÀÇÇÏ°íÀÚ ÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù. ¿¬»êÀÚ ÇÔ¼öÀÇ ÀμöÀÇ °³¼ö¸¦ Àß »ì
Æ캸ÀÚ.

#include <stdio.h>
#include <iostream.h>
class Time {
protected:
 int hour,min,sec;
public:
 void settime(int h,int m,int s) {
   hour=h;
   min=m;
   sec=s;
   return;
   }
 void outtime();
 Time operator ++(void);     // ½Ã°£À» 1 Áõ°¡½ÃÅ°´Â ++ ¿¬»êÀÚ
 };
Time Time::operator ++(void)    // ++ ¿¬»êÀÚ  ÇÔ¼öÀÇ Á¤ÀÇ
{
sec ++;                       // Ãʸ¦ 1ÃÊ Áõ°¡½ÃŲ´Ù.
if (sec>60) {                 // ÃÊ ÀÚ¸®³Ñħ ó¸®
 min++;
 sec-=60;
 }
if (min>60) {                 // ºÐ ÀÚ¸®³Ñħ ó¸®
 hour++;
 min-=60;
 }
hour %= 12;
return (*this);               // ¿¬»ê °á°úÀÎ °´Ã¼¸¦ ¸®ÅÏ
}
void Time::outtime(void)
{
cout << endl << "time is " << hour << " hour " << min<<  "
minute " << sec << " second." << endl;
}
void main()
{
Time a,b;
a.settime(2,12,23);
a.outtime();            // ½Ã°£À» Ãâ·Â
a=a++;                  // 1ÃÊ Áõ°¡½ÃÅ´
a.outtime();            // Áõ°¡½ÃÅ°°í ³­ ÈÄÀÇ Ãâ·Â
}

½ÇÇà °á°ú¸¦ º¸ÀÚ.

time is 2 hour 12 minute 23 second.

time is 2 hour 12 minute 24 second.

óÀ½¿¡ Ãâ·ÂÇÑ ½Ã°£ÀÌ a °´Ã¼°¡ ÃʱâÈ­µÈ ½Ã°£ÀÌ°í µÎ ¹ø° Ãâ·ÂµÈ ½Ã°£ÀÌ 1
ÃÊ Áõ°¡ÇÑ ÈÄÀÇ ½Ã°£ÀÌ´Ù. Áõ°¡ÀÇ ´ë»óÀÌ µÇ´Â  ÇÇ¿¬»êÀÚÀÎ TimeÇüÀÇ °´Ã¼ ÇÏ
³ª°¡ ¹Ýµå½Ã ÇÊ¿äÇÏÁö¸¸ ++ ¿¬»êÀÚ ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °´Ã¼ ÀÚ½ÅÀÌ ÇÇ¿¬»êÀÚ°¡
µÇ¾î ÁֹǷΠ++ ¿¬»êÀÚ Á¤ÀÇ ºÎºÐ¿¡¼­´Â Àμö¸¦ µû·Î Àü´Þ¹ÞÀ» ÇÊ¿ä°¡ ¾ø´Ù.
±×·¡¼­ Àμö¸¦ ÃëÇÏÁö ¾ÊÀ¸¸ç ¿¬»êÀÚ ÇÔ¼ö Á¤ÀÇ ºÎºÐÀÇ Àμö ¸®½ºÆ®¿¡´Â void
°¡ ±âÀԵǾî ÀÖ´Ù.
¿¬»êÀÚ ÇÔ¼ö°¡ ÇÇ¿¬»êÀÚÀÇ °³¼öº¸´Ù Çϳª ÀûÀº Àμö¸¦ ÃëÇÏ´Â °ÍÀº ¿¬»êÀÚ ÇÔ
¼ö°¡ ¸â¹ö ÇÔ¼öÀÏ °æ¿ì¿¡ ÇÑÇؼ­ÀÌ¸ç ¿ÜºÎ¿¡ Á¤ÀÇµÈ friend ÇÔ¼öÀÏ °æ¿ì´Â ÇÇ
¿¬»êÀÚÀÇ °³¼ö¿Í ÀμöÀÇ °³¼ö°¡ °°¾ÆÁø´Ù. ÀÌ¿¡ °üÇؼ­´Â friend ¿¬»êÀÚ ÇÔ¼ö
¸¦ ¼³¸íÇÒ ¶§ ´Ù½Ã »ìÆ캸ÀÚ.

À̾ °è¼ÓµË´Ï´Ù. ==============>>>>>>>


--------------------------------------------------------------------------------

    

 ´ÙÀ½