26-3.ŸÀÔ º¯È¯

26-3-°¡.º¯È¯ »ý¼ºÀÚ

ÀÏ¹Ý Å¸ÀÔÀÇ º¯¼ö³¢¸® °ªÀ» ´ëÀÔÇÒ ¶§´Â »ê¼ú º¯È¯ ±ÔÄ¢¿¡ µû¶ó ¾Ï½ÃÀûÀ¸·Î »óÈ£ º¯È¯µÈ´Ù. ¹°·Ð ¸ðµç ŸÀÔµéÀÌ ´Ù »óÈ£ º¯È¯µÇ´Â °ÍÀº ¾Æ´Ï¸ç ȣȯµÇ´Â ŸÀԵ鳢¸®¸¸ ±×·¸´Ù. ´ÙÀ½ÀÇ Äڵ带 º¸ÀÚ.

 

int i='C';

double d=12;

 

'C'´Â ¹®ÀÚÇü »ó¼öÁö¸¸ Á¤¼öÇü º¯¼ö i¿¡ ´ëÀÔÇÒ ¼ö ÀÖÀ¸¸ç 12´Â Á¤¼öÇü »ó¼öÁö¸¸ ½Ç¼öÇü º¯¼ö d¿¡ ´ëÀÔÇÒ ¼ö ÀÖ´Ù. ¹®ÀÚÇüÀÌ Á¤¼öÇüÀÇ Å« ŸÀÔÀ¸·Î º¯È¯µÉ ¶§´Â ¾Ï½ÃÀûÀ¸·Î »ó½Â º¯È¯µÇ¸ç ¹Ý´ëÀÇ °æ¿ì´Â Çϰ­ º¯È¯ÀÌ ¹ß»ýÇÑ´Ù. º¯¼ö³¢¸® ´ëÀÔÇÒ ¶§³ª ÇÔ¼öÀÇ Àμö·Î Àü´ÞµÉ ¶§µµ º°´Ù¸¥ °ÅºÎ¾øÀÌ ¾Ï½ÃÀû º¯È¯ÀÌ Àû¿ëµÈ´Ù. ¹°·Ð Á¤¼öÇü º¯¼ö¿¡ ½Ç¼ö°ªÀ» ´ëÀÔÇÏ´Â ½ÄÀÇ Çϰ­ º¯È¯ÀÇ °æ¿ì ¾à°£ÀÇ Á¤È®µµ ¼Õ½ÇÀÌ ¹ß»ýÇÒ ¼ö ÀÖÀ¸¹Ç·Î °æ°í·Î 󸮵ȴÙ.

Ŭ·¡½ºÀÇ °´Ã¼µéµµ ÀÏ¹Ý Å¸ÀÔ°ú ¸¶Âù°¡Áö·Î ¾Ï½ÃÀû º¯È¯ÀÌ °¡´ÉÇÒ ¼ö Àִµ¥ Ŭ·¡½º°¡ ÀÏ¹Ý Å¸ÀÔ°ú ¿ÏÀüÈ÷ µ¿µîÇØÁö·Á¸é ŸÀÔÀ» º¯È¯ÇÒ ¼ö ÀÖ´Â ¹®¹ýÀû ÀåÄ¡°¡ ÀÖ¾î¾ß ÇÑ´Ù. ±× ù ¹øÂ° ÀåÄ¡°¡ ¹Ù·Î º¯È¯ »ý¼ºÀÚ(Conversion Constructor)ÀÌ´Ù. º¯È¯ »ý¼ºÀÚ´Â ±âº» ŸÀÔÀ¸·ÎºÎÅÍ °´Ã¼¸¦ ¸¸µå´Â »ý¼ºÀÚÀ̸ç Àμö¸¦ Çϳª¸¸ ÃëÇÑ´Ù. Àμö°¡ µÑ ÀÌ»óÀÌ¸é º¯È¯ »ý¼ºÀÚ°¡ ¾Æ´Ï´Ù. ´ÙÀ½ ¿¹Á¦ÀÇ Time »ý¼ºÀÚ´Â Á¤¼ö°ªÀ¸·ÎºÎÅÍ Time°´Ã¼¸¦ ¸¸µç´Ù.

 

¿¹ Á¦ : Convert1

#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;

     }

     void OutTime() {

          printf("ÇöÀç ½Ã°£Àº %d:%d:%dÀÔ´Ï´Ù.\n",hour,min,sec);

     }

};

 

void main()

{

     Time Now(3723);

     Now.OutTime();

}

 

Time Ŭ·¡½º´Â ½Ã°£À» Ç¥ÇöÇÏ¸ç ½Ã, ºÐ, ÃÊÀÇ ¿ä¼ÒµéÀ» ¸â¹ö º¯¼ö·Î °¡Áø´Ù. µÎ °³ÀÇ »ý¼ºÀÚ°¡ Á¤ÀǵǾî Àִµ¥ µðÆúÆ® »ý¼ºÀÚ¿Í º¯È¯ »ý¼ºÀÚÀÌ´Ù. ½Ã°£À̶ó´Â °ªÀº ½Ã, ºÐ, ÃÊÀÇ 3Â÷¿øÀ¸·Î Ç¥ÇöÇÏÁö¸¸ ÀÚÁ¤ ÀÌÈÄ °æ°úÇÑ ½Ã°£À» Àý´ëÃÊ·Î Á¤ÀÇÇϰí Àý´ëÃʷΠǥÇöÇÒ ¼öµµ ÀÖ´Ù. °¡·É Á¤¿À´Â 43200Àý´ëÃÊÀ̸ç Àý´ëÃÊ 33956Àº ¿ÀÀü 9½Ã 25ºÐ 56Ãʰ¡ µÈ´Ù. Àý´ëÃÊ´Â ½Ã°£³¢¸®ÀÇ °è»ê¿¡ À¯¸®ÇÑ Ç¥Çö¹ýÀÌ¸ç ½Ç¿ëÀûÀÎ °¡Ä¡°¡ ÀÖ´Ù.

Time(int) »ý¼ºÀÚ´Â Á¤¼öÇüÀÇ abssec Àμö Çϳª¸¸À» ÃëÇϴµ¥ Àý´ëÃÊ abssecÀ¸·ÎºÎÅÍ ½Ã, ºÐ, Ãʸ¦ ±¸ÇØ °´Ã¼¸¦ ÃʱâÈ­ÇÑ´Ù. Àý´ëÃʷκÎÅÍ ½Ã, ºÐ, ÃÊÀÇ ¿ä¼Ò¸¦ ºÐ¸®Çس»´Â ¼ö½ÄÀº ¾ÆÁÖ °£´ÜÇѵ¥ ½Ã°£Àº 3600À¸·Î ³ª´©¸é µÇ°í ÃÊ´Â 60À¸·Î ³ª´« ³ª¸ÓÁö¸¦ ±¸ÇÏ¸é µÈ´Ù. Á¤¼ö°ª Çϳª¸¦ º¯È¯ÇÏ¿© °´Ã¼¸¦ »ý¼ºÇϹǷΠÀÌ·± »ý¼ºÀÚ¸¦ º¯È¯ »ý¼ºÀÚ¶ó°í ÇÑ´Ù. main ÇÔ¼öÀÇ Ã¹ ¹øÂ° ¹®Àå Time Now(3723);Àº Á¤¼ö »ó¼ö 3723À̶ó´Â °ªÀ¸·ÎºÎÅÍ 1:2:3Ãʶó´Â TimeÇüÀÇ °´Ã¼¸¦ »ý¼ºÇÑ´Ù. ÀÌ ¹®ÀåÀº °´Ã¼ ¼±¾ð ¹®¹ýÀ¸·Î º¯È¯ »ý¼ºÀÚ¸¦ Á÷Á¢ÀûÀ¸·Î È£ÃâÇÏ´Â °ÍÀÌ°í ´ÙÀ½°ú °°ÀÌ °£Á¢ÀûÀ¸·Î È£ÃâÇÒ ¼öµµ ÀÖ´Ù.

 

Time Now=3723;

 

int¿Í TimeÀº ¿ø·¡ ȣȯµÇÁö ¾ÊÁö¸¸ º¯È¯ »ý¼ºÀÚ°¡ Á¤ÀǵǾî ÀÖÀ¸¸é ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ ÀÚµ¿ º¯È¯µÈ´Ù. Ãʱâ½ÄÀÇ ¿ìº¯ÀÌ Á¤¼öÀ̹ǷΠÄÄÆÄÀÏ·¯´Â Á¤¼ö¸¦ Time°´Ã¼·Î º¯È¯ÇÒ ¼ö ÀÖ´Â º¯È¯ »ý¼ºÀÚ¸¦ ã¾Æ È£ÃâÇÑ´Ù. º¯È¯ »ý¼ºÀÚ°¡ Á¤ÀǵǾî ÀÖÀ¸¸é ÃʱâÈ­ÇÒ ¶§»Ó¸¸ ¾Æ´Ï¶ó ¾ðÁ¦µçÁö Á¤¼ö°ªÀ» Time °´Ã¼¿¡ ´ëÀÔÇÒ ¼öµµ ÀÖ´Ù. Now=1000; ´ëÀÔ¹®Àº Á¤¼ö°ª 1000À» TimeÇü °´Ã¼·Î ¸¸µé±â À§ÇØ Time(int) »ý¼ºÀÚ¸¦ È£ÃâÇÏ¿© Àӽà °´Ã¼¸¦ ¸¸µé°í ÀÌ °´Ã¼¸¦ Now¿¡ ´ëÀÔÇÑ´Ù.

Time Ŭ·¡½º°¡ Àý´ëÃʶó´Â Á¤¼öÇüÀÇ °³³äÀ» Áö¿øÇϹǷΠÁ¤¼ö¸¦ ¾Ï½ÃÀûÀ¸·Î º¯È¯ÇÏ¿© Time °´Ã¼¸¦ ¸¸µé ¼ö ÀÖ´Â ±â´ÉÀº ¹«Ã´ Æí¸®ÇÏ´Ù. ±×·¯³ª ÀÌ·± ±â´ÉÀÌ ¿¹»óÄ¡ ¸øÇÑ ºÎÀÛ¿ëÀÇ ¿øÀÎÀÌ µÉ ¼öµµ Àִµ¥ ´ÙÀ½ Äڵ带 º¸ÀÚ.

 

void func(Time When)

{

     When.OutTime();

}

 

void main()

{

     Time Now(3723);

     func(Now);

     func(1234);

}

 

func ÇÔ¼ö´Â TimeÇüÀÇ °´Ã¼¸¦ Àμö·Î Àü´Þ¹Þ¾Æ ±× ½Ã°£À» Ãâ·ÂÇϴµ¥ Á¤¼ö°ªÀ» Àü´ÞÇØµµ Àß µ¿ÀÛÇÑ´Ù. ½ÇÀμö°¡ Çü½ÄÀμö·Î Àü´ÞµÇ´Â °úÁ¤Àº ÀÏÁ¾ÀÇ ´ëÀÔ ¿¬»êÀ̸ç ÀÌ °úÁ¤¿¡¼­ º¯È¯ »ý¼ºÀÚ°¡ ÀÛµ¿ÇÏ¿© Á¤¼ö°ªÀ» TimeÇüÀÇ Àӽà °´Ã¼·Î º¯È¯Çϱ⠶§¹®ÀÌ´Ù. main¿¡¼­ func(1234)¸¦ È£ÃâÇߴµ¥ 1234°¡ Àý´ëÃÊÀÇ Àǹ̸¦ °¡Áö´Â °ªÀ̶ó¸é ¾Æ¹«·± ¹®Á¦°¡ ¾ø´Ù.

±×·¯³ª ¸¸¾à À̰ÍÀÌ ÀǵµµÈ È£ÃâÀÌ ¾Æ´Ï¶ó ´Ü¼øÇÑ ½Ç¼ö¿´´Ù¸é ´ë´ÜÈ÷ Àâ±â Èûµç ¹ö±×ÀÇ ¿øÀÎÀÌ µÉ ¼ö ÀÖ´Ù. TimeÇüÀÇ °´Ã¼¸¦ Àü´ÞÇØ¾ß Çϴµ¥ Á¤¼ö°ªÀ» À߸ø Àü´ÞÇØµµ ÄÄÆÄÀÏ·¯°¡ ¾Æ¹«·± ±º¸»¾øÀÌ º¯È¯À» ÇØ ¹ö¸®´Ï µð¹ö±ëÀ» ÇØ º¸±â Àü¿¡´Â À߸øÀ» ¾Ë±â ¾î·Æ´Ù. »Ó¸¸ ¾Æ´Ï¶ó func('S');³ª func(123.456);°°Àº È£Ãâ¹®Á¶Â÷µµ ¿¡·¯·Î 󸮵ÇÁö ¾Ê´Â´Ù. ¹®ÀÚÇüÀ̳ª ½Ç¼öÇüÀº Á¤¼öÇüÀ¸·Î ¾Ï½ÃÀû º¯È¯ÀÌ °¡´ÉÇϰí ÀÌ·¸°Ô º¯È¯µÈ Á¤¼öÇüÀº ´Ù½Ã º¯È¯ »ý¼ºÀÚ¿¡ ÀÇÇØ TimeÇü °´Ã¼·Î º¯È¯ °¡´ÉÇϱ⠶§¹®ÀÌ´Ù.

º¯È¯ »ý¼ºÀÚ´Â Æí¸®Çϱ⵵ ÇÏÁö¸¸ Ŭ·¡½º¿Í ÀÏ¹Ý Å¸ÀÔ°£ÀÇ ±¸ºÐÀ» ¸ðÈ£ÇÏ°Ô ¸¸µé¾î ¹ö¸®´Â ¸ÍÁ¡ÀÌ ÀÖ´Ù. º¯È¯ »ý¼ºÀÚÀÇ Á¸Àç´Â ÄÄÆÄÀÏ·¯¿¡°Ô ´õ ¸¹Àº ¾Ï½ÃÀû º¯È¯ ¼ö´ÜÀ» Á¦°øÇÏ¿© ¾ö°ÝÇÑ Å¸ÀÔ Ã¼Å©¸¦ ¹æÇØÇϸç ÀÌ´Â ¹ö±×ÀÇ ¿øÀÎÀÌ µÇ±â¿¡ ÃæºÐÇÏ´Ù. ÀÌ·± ºÎÀÛ¿ëÀÌ ¿ì·ÁµÇ¸é explicit Ű¿öµå¸¦ º¯È¯ »ý¼ºÀÚ¾Õ¿¡ ºÙÀδÙ.

 

class Time

{

private:

     int hour,min,sec;

public:

     explicit Time(int abssec)

     ....

 

explicit·Î ÁöÁ¤µÈ »ý¼ºÀÚ´Â ¾Ï½ÃÀûÀÎ Çü º¯È¯¿¡ »ç¿ëÇÒ ¼ö ¾øµµ·Ï ±ÝÁöµÈ´Ù. Áï, ÄÄÆÄÀÏ·¯°¡ ÀÓÀÇÀûÀÎ ÆÇ´ÜÀ» ÇÏÁö ¸øÇϵµ·Ï ÇÑ´Ù. ±×·¯³ª ¸í½ÃÀûÀÎ Çü º¯È¯À̳ª ij½ºÆ® ¿¬»êÀÚ¸¦ ¾²´Â °ÍÀº ¿©ÀüÈ÷ °¡´ÉÇÏ´Ù.

 

Time Now=3723;                        // ºÒ°¡´É

Time Now(3723);                       // °¡´É

Time Now=(Time)3723;              // °¡´É

 

¸í½ÃÀûÀÎ »ý¼ºÀÚ È£ÃâÀ̳ª ij½ºÆ® ¿¬»êÀÚ´Â »ç¿ëÀÚ°¡ º¯È¯Ç϶ó´Â Àǻ縦 ºÐ¸íÈ÷ ¹àÈù °ÍÀ̹ǷΠexplicit Ű¿öµå¿Í´Â »ó°ü¾øÀÌ Çã¿ëµÈ´Ù. »ç¿ëÀÚ°¡ Ã¥ÀÓÀ» Áö°Ú´Ù°í º¯È¯À» Áö½ÃÇßÀ¸¹Ç·Î ÄÄÆÄÀÏ·¯´Â ÀÌ Áö½Ã¸¦ °ÅºÎÇÒ Çʿ䵵 ¸íºÐµµ ¾ø´Â °ÍÀÌ´Ù. ÇÏÁö¸¸ ´ëÀÔÀ̳ª ÇÔ¼ö È£Ãâ¿¡ ÀÇÇÑ ¾Ï½ÃÀûÀÎ º¯È¯Àº ÄÄÆÄÀÏ ¿¡·¯·Î 󸮵ȴÙ.

º¯È¯ »ý¼ºÀÚ´Â ÇÊ¿äÇѸ¸Å­ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ½Ç¼ö°ªÀ¸·ÎºÎÅÍ Time °´Ã¼¸¦ »ý¼ºÇϵµ·Ï ÇÏ°í ½Í´Ù¸é ½Ç¼ö Çϳª¸¦ Àμö·Î ÃëÇÏ´Â »ý¼ºÀÚ¸¦ Á¤ÀÇÇÏ¸é µÈ´Ù. ´ÙÀ½ »ý¼ºÀÚ¸¦ TimeŬ·¡½º¿¡ Ãß°¡ÇØ º¸ÀÚ.

 

Time(double d) {

     hour=int(d)%24;

     min=int((d-int(d))*100)%60;

     sec=0;

}

 

½Ç¼ö¸¦ ¾î¶»°Ô Time°´Ã¼·Î ¹Ù²Ü °ÍÀΰ¡¿¡ ´ëÇÑ ¸íÈ®ÇÑ º¯È¯ ±ÔÄ¢ÀÌ ÇÊ¿äÇѵ¥ Time(double) »ý¼ºÀÚÀÇ °æ¿ì Á¤¼öºÎ¸¦ ½Ã°£À¸·Î, ¼Ò¼öºÎ¸¦ ºÐÀ¸·Î Çϰí Ãʸ¦ »ó¼ö 0À¸·Î °íÁ¤½ÃŰ´Â ±ÔÄ¢À» Àû¿ëÇß´Ù. º¯È¯ ±ÔÄ¢ÀÌ Á» ¾ïÁö½º·´±â´Â ÇÏÁö¸¸ ÀÌ·± ½ÄÀ¸·Î ÇÊ¿äÇÑ º¯È¯ »ý¼ºÀÚ¸¦ Á¤ÀÇÇÏ¸é µÈ´Ù. ÀÌÈÄ Time °´Ã¼´Â Time A(12.34) µîÀÇ ¼±¾ð¹®¿¡ ÀÇÇØ ½Ç¼ö°ªÀ¸·ÎºÎÅÍ º¯È¯ »ý¼ºµÉ ¼ö ÀÖ´Ù. ½ÇÁ¦·Î ÆÄ½ºÄ® ¾ð¾î´Â ½Ç¼ö Çϳª·Î ³¯Â¥¿Í ½Ã°£À» Ç¥ÇöÇϱ⵵ ÇÑ´Ù.

º¯È¯ »ý¼ºÀÚ´Â ¹Ýµå½Ã Àμö¸¦ Çϳª¸¸ ÃëÇØ¾ß ÇÏ¸ç µÑ ÀÌ»óÀ» ÃëÇÒ °æ¿ì º¯È¯ »ý¼ºÀÚ°¡ ¾Æ´Ï´Ù. ¿Ö³ÄÇÏ¸é º¯È¯À̶õ ¿øÄ¢ÀûÀ¸·Î ÀÏ´ëÀÏÀÇ ¿¬»êÀ̸ç Time A(1234); ¼±¾ð¹®À̳ª A=1234; ´ëÀÔ¹®¿¡¼­ º¸´Ù½ÃÇÇ °´Ã¼ ÃʱâÈ­¿¡ ÇÊ¿äÇÑ ÇÇ¿¬»êÀÚ°¡ Çϳª¹Û¿¡ ¾ø´Ù. º¯È¯ »ý¼ºÀÚ°¡ Àû¿ëµÇ´Â ÃʱâÈ­, ´ëÀÔ ¿¬»êÀº ÀÌÇ× ¿¬»êÀ» Çϴµ¥ Áº¯Àº °´Ã¼ ÀÚ½ÅÀ¸·Î Á¤ÇØÁ® ÀÖÀ¸¹Ç·Î ³ª¸ÓÁö ¿ìº¯ÀÌ µÇ´Â º¯È¯ ´ë»ó¿¡ ´ëÇØ¼­¸¸ Àμö¸¦ Àü´Þ¹Þ¾Æ¾ß ÇÑ´Ù. ´Ü, º¹»ç »ý¼ºÀÚ´Â Àμö¸¦ Çϳª¸¸ ÃëÇÏÁö¸¸ µ¿ÀÏ Å¸ÀÔÀ¸·ÎºÎÅÍ »çº»À» »ý¼ºÇϹǷΠº¯È¯ »ý¼ºÀÚ¶ó°í´Â ÇÒ ¼ö ¾ø´Ù.