26-3-³ª.º¯È¯ ÇÔ¼ö

º¯È¯ »ý¼ºÀÚ¸¦ Á¤ÀÇÇϸé Á¤¼ö°ªÀ¸·ÎºÎÅÍ 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();

}

 

ÀÌ·¸°Ô µÇ¸é º¯È¯ÀÌ ÇÊ¿äÇÒ ¶§ »ç¿ëÀÚ°¡ ¸â¹ö ÇÔ¼ö¸¦ ¸í½ÃÀûÀ¸·Î È£ÃâÇؾ߸¸ Çϸç ÄÄÆÄÀÏ·¯°¡ ¾î¶°ÇÑ º¯È¯ ¼­ºñ½ºµµ ÇÏÁö ¾ÊÀ¸¹Ç·Î Á» ºÒÆíÇϱâ´Â ÇÏÁö¸¸ ÃÖ¼ÒÇÑ À§ÇèÇÏÁö´Â ¾Ê´Ù.