º¯È¯ »ý¼ºÀÚ¸¦ Á¤ÀÇÇϸé Á¤¼ö°ªÀ¸·ÎºÎÅÍ TimeÇü °´Ã¼¸¦ ¸¸µé ¼ö ÀÖ°í TimeÇü °´Ã¼¿¡ Á¤¼ö°ªÀ» ´ëÀÔÇÒ ¼öµµ ÀÖ´Ù. ÀÌ°ÍÀÌ °¡´ÉÇÏ´Ù¸é ¹Ý´ëÀÇ º¯È¯, Áï TimeÇü °´Ã¼·ÎºÎÅÍ Á¤¼ö°ªÀ» ¸¸µé¾î³»´Â °Íµµ °¡´ÉÇÒ °ÍÀÌ´Ù. Á¤¼ö°¡ TimeÀÌ µÉ ¼ö ÀÖ´Ù¸é Timeµµ Á¤¼ö°¡ µÉ ¼ö ÀÖ¾î¾ß ºñ·Î¼Ò µÎ ŸÀÔÀÌ ¿ÏÀüÈ÷ ȣȯµÈ´Ù°í Ç¥ÇöÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ Äڵ尡 Á¦´ë·Î µ¿ÀÛÇØ¾ß ÇÑ´Ù.
Time Now(18,25,12);
int i=Now;
printf("i=%d\n",i);
18:25:12Ãʶó´Â ½Ã°£ÀÌ Àý´ëÃÊ·Î ¾ó¸¶Àΰ¡¸¦ °è»êÇÑ ÈÄ Á¤¼ö°ªÀ¸·Î Ãâ·ÂÇØ º¸´Â ÄÚµåÀÌ´Ù. ±×·¯³ª ÀÌ ÄÚµå´Â ¾ÆÁ÷ µ¿ÀÛÇÏÁö ¾Ê´Â´Ù. ¿Ö³ÄÇϸé Time Ŭ·¡½º´Â Á¤¼ö¸¦ TimeÀ¸·Î ¹Ù²Ù´Â º¯È¯ »ý¼ºÀÚ¸¸ Á¦°øÇÒ »Ó ÀÚ½ÅÀ» Á¤¼ö·Î ¹Ù²Ù´Â ¹æ¹ýÀº Á¦°øÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù. °´Ã¼¸¦ ÀÏ¹Ý Å¸ÀÔÀ¸·Î ¿ªº¯È¯ÇÏ·Á¸é º¯È¯ ÇÔ¼ö(Conversion Function)¸¦ Á¤ÀÇÇØ¾ß ÇÑ´Ù. º¯È¯ ÇÔ¼öÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù. ´ÙÀ½¿¡ »ó¼¼ÇÏ°Ô ¾Ë¾Æº¸°ÚÁö¸¸ º¯È¯ ÇÔ¼ö´Â ij½ºÆ® ¿¬»êÀÚ¿¡ ´ëÇÑ ¿À¹ö·ÎµùÀÇ ÇÑ ¿¹ÀÌ´Ù.
operator º¯È¯Å¸ÀÔ()
{
º»Ã¼
}
Å°¿öµå operator ´ÙÀ½¿¡ º¯È¯ÇÏ°íÀÚ Çϴ ŸÀÔÀÇ À̸§À» ¹àÈ÷°í º»Ã¼¿¡´Â º¯È¯ ¹æ¹ýÀ» ÀÛ¼ºÇÑ´Ù. º¯È¯ ÇÔ¼ö´Â Àμö¸¦ ÃëÇÏÁö ¾ÊÀ¸¸ç ¸®ÅÏ Å¸ÀÔµµ ÁöÁ¤ÇÏÁö ¾Ê´Â´Ù. ¿Ö³ÄÇÏ¸é ¿¬»ê ´ë»óÀº ÀÚ±â ÀÚ½ÅÀ¸·Î °íÁ¤µÇ¾î ÀÖ°í º¯È¯ °á°ú´Â ÁöÁ¤ÇÑ Å¸ÀÔÀÓÀ» ÀÌ¹Ì ¾Ë°í Àֱ⠶§¹®ÀÌ´Ù. °´Ã¼ ÀÚ½ÅÀ» ´Ù¸¥ ŸÀÔÀ¸·Î º¯È¯ÇÏ´Â µ¿ÀÛÀ» ÇϹǷΠÀÛ¾÷°Å¸®¿Í °á°ú°¡ ÀÌ¹Ì Á¤ÇØÁ®ÀÖ´Â °ÍÀÌ´Ù. Convert1 ¿¹Á¦ÀÇ Time Ŭ·¡½º¿¡ ½ÃºÐÃʸ¦ Àü´Þ¹Þ´Â »ý¼ºÀÚ¿Í º¯È¯ ÇÔ¼ö¸¦ Ãß°¡ÇØ º¸ÀÚ.
¿¹ Á¦ : Convert2 |
#include <Turboc.h>
class Time
{
private:
int hour,min,sec;
public:
Time() { }
Time(int abssec) {
hour=abssec/3600;
min=(abssec/60)%60;
sec=abssec%60;
}
Time(int h, int m, int s) { hour=h; min=m; sec=s; }
operator int() {
return hour*3600+min*60+sec;
}
void OutTime() {
printf("ÇöÀç ½Ã°£Àº %d:%d:%dÀÔ´Ï´Ù.\n",hour,min,sec);
}
};
void main()
{
Time Now(18,25,12);
int i=Now;
printf("i=%d\n",i);
}
operator int() º¯È¯ ÇÔ¼ö°¡ Time Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼ö·Î ÀÛ¼ºµÇ¾î ÀÖ´Ù. º¯È¯ ÇÔ¼öÀÇ º»Ã¼´Â ¾ÆÁÖ ´Ü¼øÇѵ¥ ½Ã°£¿¡ 3600À» °öÇÑ °ª, ºÐ¿¡ 60À» °öÇÑ °ª, ±×¸®°í Ãʸ¦ ¸ðµÎ ´õÇϸé Àý´ëÃʸ¦ ½±°Ô °è»êÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ·¸°Ô ±¸ÇÑ Á¤¼ö°ªÀ» ¸®ÅÏÇÑ´Ù. º¯È¯ ÇÔ¼öÀÇ ¿øÇü¿¡ ¸®ÅÏ Å¸ÀÔÀÌ ¾øÁö¸¸ ¾îµð±îÁö³ª »ý·«µÈ °ÍÀÏ »ÓÀ̹ǷΠº»Ã¼¿¡¼´Â return ¹®À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. º¯È¯ ÇÔ¼ö¿¡ ÀÇÇØ °´Ã¼¸¦ int·Î º¯È¯ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ Á¤ÀǵǾúÀ¸¹Ç·Î ÀÌÁ¦ TimeÇü °´Ã¼´Â Á¤¼öÇü º¯¼ö¿¡ ´ëÀ﵃ ¼ö ÀÖ´Ù.
main¿¡¼ TimeÇü °´Ã¼ Now¸¦ 18:25:12ÃÊ·Î ÃʱâÈÇÏ°í Á¤¼öÇü º¯¼ö i¸¦ Now·Î ÃʱâÈÇß´Ù. À̶§ º¯È¯ ÇÔ¼ö°¡ È£ÃâµÇ¾î Now°´Ã¼ÀÇ ¸â¹ö°ªÀ¸·ÎºÎÅÍ Àý´ëÃʸ¦ °è»êÇÏ¿© ¸®ÅÏÇÒ °ÍÀ̸ç i´Â ±× °á°ú°ªÀ» °¡Áø´Ù. Ãâ·ÂµÇ´Â °á°ú´Â 18:25:12ÃÊÀÇ Àý´ëÃÊÀÎ 66312°¡ µÈ´Ù. int¿Í ȣȯµÈ´Ù´Â °ÍÀº »ç½Ç»ó ¸ðµç ¼öÄ¡Çü°ú ȣȯµÉ ¼ö ÀÖ´Ù´Â ¶æÀ̸ç TimeÇü °´Ã¼´Â char, double, float, long µîÀÇ Å¸ÀÔ°úµµ »óÈ£ º¯È¯ °¡´ÉÇÏ´Ù.
º¯È¯ ÇÔ¼ö¿Í º¯È¯ »ý¼ºÀÚ´Â ÇÏ´Â ÀÏÀÌ ºñ½ÁÇϱ⠶§¹®¿¡ ´àÀº Á¡ÀÌ ¸¹´Ù. ¿ì¼± º¯È¯ »ý¼ºÀÚ¿Í ¸¶Âù°¡Áö·Î º¯È¯ ÇÔ¼öµµ ÇÊ¿äÇѸ¸Å ¾ó¸¶µçÁö Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. Time °´Ã¼¸¦ ½Ç¼ö³ª ¹®ÀÚÇüÀ¸·Îµµ º¯È¯Çϵµ·Ï ÇÏ°í ½Í´Ù¸é operator double(), operator char() ÇÔ¼ö¸¦ ´õ Á¤ÀÇÇÏ¸é µÈ´Ù. ¶ÇÇÑ º¯È¯ ÇÔ¼öµµ º¯È¯ »ý¼ºÀÚ¿Í ¶È°°Àº ÀÌÀ¯·Î ´Ù¼Ò À§ÇèÇÑ ¸éÀÌ ÀÖ´Ù.
void func(int i)
{
....
}
func ÇÔ¼ö´Â Á¤¼öÇü Àμö Çϳª¸¦ ¹Þ¾Æ µéÀ̴µ¥ ÀÌ ÇÔ¼ö¿¡ ´ëÇØ func(Now)·Î È£ÃâÇÒ ¼öµµ ÀÖ´Ù. ¿Ö³ÄÇÏ¸é º¯È¯ ÇÔ¼ö¿¡ ÀÇÇØ TimeÇü °´Ã¼°¡ Á¤¼ö·Î º¯È¯µÉ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ÀǵµÀûÀΠȣÃâÀ̶ó¸é ¹°·Ð º¯È¯ ÇÔ¼öÀÇ ¼ºñ½º¸¦ ±âºÐÁÁ°Ô ¹Þ°ÚÁö¸¸ ´Ü¼øÇÑ ½Ç¼öÀÏ °æ¿ì´Â ¹®Á¦°¡ Ä¿Áø´Ù. ´ÙÀ½ ¿¹¸¦ ÀÚ¼¼È÷ »ìÆ캸ÀÚ.
int Nox,Noy;
Time Now;
gotoxy(Nox,Now);
gotoxyÀÇ µÎ ¹ø° Àμö´Â Çʽà Noy¸¦ À߸ø ÀûÀº °ÍÀÌ°ÚÁö¸¸ ¹®¹ýÀûÀ¸·Î Àû¹ýÇϸç ÄÄÆÄÀÏ·¯´Â ÀÌ ¹®ÀåÀÌ ¹¹°¡ ¹®Á¦ÀÎÁö ¾Ë ¸®°¡ ¾ø´Ù. Now°¡ Á¤¼ö°¡ µÉ ¼ö ÀÖÀ¸¹Ç·Î gotoxyÀÇ yÁÂÇ¥·Î »ç¿ëÇÑ´Ù ÇÏ´õ¶óµµ ¹¹ ÀÌ»óÇÒ°Ô ¾ø´Â °ÍÀÌ´Ù. ½ÉÁö¾î ar[Now]=0; °°ÀÌ ¹è¿ÀÇ Ã·ÀÚ¿¡µµ TimeÇü °´Ã¼¸¦ ¾µ ¼ö ÀÖÀ¸¸ç ptr+Now°°ÀÌ Æ÷ÀÎÅÍ¿¡ TimeÇü °´Ã¼¸¦ ´õÇÏ´Â °Íµµ Çã¿ëµÈ´Ù. º¯È¯ ÇÔ¼ö°¡ ÀÖÀ¸´Ï ÄÄÆÄÀÏ·¯´Â ÀÌ·± ½ÉÈ÷ ¼ö»óÇØ º¸ÀÌ´Â Äڵ忡 ´ëÇؼ °æ°í Çϳªµµ ¹ß»ýÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù.
°Ô´Ù°¡ º¯È¯ ÇÔ¼ö´Â º¯È¯ »ý¼ºÀÚó·³ explicit·Î ¾Ï½ÃÀû º¯È¯À» ±ÝÁöÇÏ´Â ÀåÄ¡µµ ¾ø¾î ÁÖÀÇ ±í°Ô »ç¿ëÇÏ´Â ¼ö¹Û¿¡ ¾ø´Ù. ¾Ï½ÃÀû º¯È¯ÀÌ Á¤ ¹®Á¦°¡ µÈ´Ù¸é ¾Æ¿¹ º¯È¯ »ý¼ºÀÚ³ª º¯È¯ ÇÔ¼ö¸¦ ¸¸µéÁö ¸»°í TimeToInt, IntToTime °°Àº ¸í½ÃÀûÀÎ ÇÔ¼ö¸¦ ¸¸µé¾î ²À ÇÊ¿äÇÒ ¶§¸¸ »ç¿ëÇÏ´Â ÆíÀÌ ´õ ¾ÈÀüÇÏ´Ù.
¿¹ Á¦ : Convert3 |
#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);
}
int TimeToInt() {
return hour*3600+min*60+sec;
}
void IntToTime(int abssec) {
hour=abssec/3600;
min=(abssec/60)%60;
sec=abssec%60;
}
};
void main()
{
Time Now(18,25,12);
int i=Now.TimeToInt();
printf("i=%d\n",i);
Time Now2;
Now2.IntToTime(i);
Now2.OutTime();
}
ÀÌ·¸°Ô µÇ¸é º¯È¯ÀÌ ÇÊ¿äÇÒ ¶§ »ç¿ëÀÚ°¡ ¸â¹ö ÇÔ¼ö¸¦ ¸í½ÃÀûÀ¸·Î È£ÃâÇؾ߸¸ Çϸç ÄÄÆÄÀÏ·¯°¡ ¾î¶°ÇÑ º¯È¯ ¼ºñ½ºµµ ÇÏÁö ¾ÊÀ¸¹Ç·Î Á» ºÒÆíÇϱâ´Â ÇÏÁö¸¸ ÃÖ¼ÒÇÑ À§ÇèÇÏÁö´Â ¾Ê´Ù.