[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 ¿¬»êÀÚ ÇÔ¼ö
¸¦ ¼³¸íÇÒ ¶§ ´Ù½Ã »ìÆ캸ÀÚ.
ÀÌ¾î¼ °è¼ÓµË´Ï´Ù. ==============>>>>>>>
--------------------------------------------------------------------------------
´ÙÀ½