[C++]°­ÁÂ(14)<--Æı«ÀÚ




Ŭ·¡½º À̸§ÀÌ PositionÀ̹ǷΠ»ý¼ºÀÚ´Â ´ç¿¬È÷ Position()ÀÌ µÈ´Ù. »ý¼ºÀÚ Po
sition()Àº ¼¼ °³ÀÇ Àμö¸¦ ¹Þ¾Æ µ¥ÀÌÅÍ ¸â¹ö px,py,ch¿¡ °¢°¢ ´ëÀÔÀ» ÇØÁÖ´Â
°£´ÜÇÑ ±¸Á¶·Î µÇ¾î ÀÖ´Ù. »ý¼ºÀÚ´Â °´Ã¼°¡ »ý¼ºµÉ ¶§ Ưº°È÷ È£ÃâÇÏÁö ¾Ê¾Æµµ
ÀÚµ¿À¸·Î È£ÃâµÈ´Ù. Áï ¸Þ¸ð¸®°¡ ÇÒ´çµÇ°í ³­ Á÷ÈÄ¿¡ »ý¼ºÀÚ°¡ È£ÃâµÇ¾îÁ® ÇÒ
´ç¹ÞÀº ¸Þ¸ð¸®¸¦ ÃʱâÈ­½ÃÅ°°Ô µÈ´Ù.
Position HERE;°¡ °´Ã¼°¡ »ý¼ºµÇ´Â ½Ã±âÀ̹ǷΠÀÌ ¹®ÀåÀ» ½ÇÇàÇÒ ¶§ »ý¼ºÀÚ°¡
È£ÃâµÈ´Ù. ±×·±µ¥ »ý¼ºÀÚµµ ºÐ¸íÈ÷ ÇÔ¼öÀ̹ǷΠÀμö¸¦ ¿ä±¸ÇÏ¸ç ¾î¶² ÇüÅ·εç
Áö Àμö°¡ ÇÔ¼ö·Î Àü´ÞµÇ¾î¾ß ÇÑ´Ù. ÀϰŸ®¸¦ ¾ÈÁÖ°í ¾î¶»°Ô ÀÏÀ» ½ÃÅ°°Ú´Â°¡
¸»ÀÌ´Ù. ±×·¡¼­ °´Ã¼¸¦ ¼±¾ðÇÏ´Â ¹®Àå¿¡ »ý¼ºÀÚÀÇ Àμö°¡ ³ªÅ¸³ª°Ô µÇ¸ç Posit
ion HERE(10, 10, 'S')¿Í °°Àº ½ÄÀ¸·Î µÈ´Ù.
PositionÇüÀÇ object HERE¸¦ »ý¼ºÇ쵂 ±× »ý¼ºÀÚÀÇ Àμö¸¦ (10,10,'S')·Î ÇÑ
´Ù´Â ¼±¾ð¹®ÀÌ´Ù. »ý¼ºÀÚ¿¡ ÀÇÇØ object ¼±¾ð°ú µ¿½Ã¿¡ °´Ã¼ÀÇ µ¥ÀÌÅÍ ¸â¹ö¸¦
ÃʱâÈ­½Ãų ¼ö ÀÖ°Ô µÇ¾úÀ¸¹Ç·Î ÀÌÁ¦ ÇÁ·Î±×·¡¹ÖÀÌ ÈξÀ ´õ °£´ÜÇØÁö°Ô µÇ¾ú´Ù.
¿¹Á¦¸¦ º¸¸é ¾Ë°ÚÁö¸¸ main ÇÔ¼ö°¡ ´Ü ¼¼ ÁÙ·Î ³¡ÀÌ ³µ´Ù. »ý¼ºÀÚ´Â ¿©·¯°³ µ¿
½Ã¿¡ Á¸ÀçÇÒ ¼ö°¡ ÀÖ´Ù. ÇÔ¼ö°¡ ´ÙÇü¼º¿¡ ÀÇÇØ Àμö°¡ ´Ù¸£¸é µ¿ÀϸíÀ¸·Î ¿©·¯
°³°¡ ÀÖÀ» ¼ö ÀÖµíÀÌ »ý¼ºÀÚµµ ÇÔ¼öÀ̹ǷΠÀμö¸¸ ´Ù¸£´Ù¸é ¿©·¯°³°¡ À־
»ó°ü¾ø´Ù. À§ ¿¹Á¦¿¡ ´ÙÀ½°ú °°Àº »ý¼ºÀÚ¸¦ Çϳª ´õ Ãß°¡½ÃÄÑ º¸ÀÚ. ¹°·Ð Ŭ·¡
½º Á¤ÀÇ ºí·° ¾È¿¡ ¿øÇüµµ ¹àÇô ÁÖ¾î¾ß ÇÑ´Ù.

Position::Position(int xy,char c)
{
px=py=xy;
ch=c;
}

µ¥ÀÌÅÍ ¸â¹ö px,py¸¦ °°Àº °ªÀ¸·Î Á¤ÀÇÇÏ´Â »ý¼ºÀÚÀ̹ǷΠ»ý¼ºµÇ´Â °´Ã¼´Â ´ë
°¢¼±»óÀÇ À§Ä¡¸¸À» ³ªÅ¸³»°Ô µÈ´Ù.  µÎ °³ÀÇ »ý¼ºÀÚ°¡ µ¿½Ã¿¡ Á¸ÀçÇϹǷΠ´ÙÀ½
µÎ ¼±¾ðÀº µ¿ÀÏÇÑ ¸ð¾çÀÇ °´Ã¼¸¦ ¸¸µéÁö¸¸ ÃʱⰪÀÌ ´Ù¸¥ °´Ã¼°¡ ¸¸µé¾îÁö¸ç
±× ÀÌÀ¯´Â °´Ã¼ »ý¼º½Ã È£ÃâµÇ´Â »ý¼ºÀÚ°¡ ´Ù¸§¿¡ ±âÀÎÇÑ´Ù.

Position A(10,18,'D');
Position B(16,'S');

ÄÄÆÄÀÏ·¯´Â °´Ã¼°¡ »ý¼ºµÉ ¶§ °´Ã¼ À̸§ µÚÀÇ »ý¼ºÀÚ·Î Àü´ÞµÈ ÀμöµéÀ» º¸°í
ÀûÀýÇÑ »ý¼ºÀÚ¸¦ ÀÚµ¿À¸·Î È£ÃâÇØÁØ´Ù. ¸¸¾à ÀÌ »óÅ¿¡¼­ Position C(1,2,"str
ing");À̶ó´Â »ý¼ºÀÚ¸¦ È£ÃâÇÏ¸é ¾î¶»°Ô µÇ°Ú´Â°¡? ÀÌ·± °æ¿ì´Â ÄÄÆÄÀÏ·¯°¡ ´ë
ÀÀµÇ´Â ÀûÀýÇÑ »ý¼ºÀÚ¸¦ ãÀ» ¼ö ¾ø±â ¶§¹®¿¡ ¿¡·¯·Î 󸮵ȴÙ. »ý¼ºÀÚ ÇÔ¼ö¿¡
µðÆúÆ® Àμö°¡ Àû¿ëµÇ´Â °æ¿ìµµ ºñ±³Àû ºó¹øÇÏ°Ô ¹ß»ýÇÑ´Ù. ´ÙÀ½ÀÇ »ý¼ºÀÚ´Â
¼¼ ¹ø° Àμö°¡ Àü´ÞµÇÁö ¾ÊÀ» °æ¿ì 'S'¸¦ ¼¼ ¹ø° Àμö·Î ÃëÇÏ´Â »ý¼ºÀÚ ÇÔ¼ö
ÀÌ´Ù.

Position::Position(int x,int y,char c='S')  // default Àμö
  {
  px=x;    
  py=y;
  ch=c;
  }

»ý¼ºÀÚ ÇÔ¼ö°¡ Á¤ÀǵǾî ÀÖÁö ¾ÊÀ» °æ¿ì´Â ¾Æ¹«·± ÃʱâÈ­µµ ÀÌ·ç¾îÁöÁö ¾ÊÀ¸¸ç
¿¡·¯´Â ¹ß»ýÇÏÁö ¾Ê´Â´Ù. ÃʱâÈ­°¡ ±»ÀÌ ºÒÇÊ¿äÇϰųª ¾Æ´Ï¸é ÃʱâÈ­¸¦ ÇØÁÖ´Â
º°µµÀÇ ¸â¹ö ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼öµµ Àֱ⠶§¹®ÀÌ´Ù. »ý¼ºÀÚÀÇ »ç¿ë¿¡ ¶Ç ÇÑ °¡Áö
ÁÖÀÇÇÒ °ÍÀº ´ÙÀ½°ú °°ÀÌ Àμö¸¦ ÃëÇÏÁö ¾Ê´Â »ý¼ºÀÚµµ ÀÖÀ» ¼ö ÀÖ´Ù.

Position::Position()  // Àμö°¡ ¾øÀ½
  {
  px=random(80);    
  py=random(25);
  ch=random(80)+20;
  }

Àμö°¡ ¾ø´Â »ý¼ºÀÚµµ °´Ã¼ »ý¼º½Ã¿¡ È£ÃâµÇ±â´Â ¸¶Âù°¡ÁöÀÌÁö¸¸ °´Ã¼ ¼±¾ð¹®
¿¡ ´ÙÀ½°ú °°ÀÌ »ý¼ºÀÚ È£ÃâÀ» À§ÇÑ °ýÈ£¸¦ ºÙ¿©¼­´Â ¾ÈµÈ´Ù.

Position D();

ÀÏ¹Ý ÇÔ¼ö´Â Àμö°¡ ¾ø´õ¶óµµ ÇÔ¼öÀÓÀ» ³ªÅ¸³»±â À§ÇØ ºó °ýÈ£¸¦ ½á ÁÖ¾î¾ß ÇÏ
Áö¸¸ »ý¼ºÀÚ´Â ÀÚµ¿À¸·Î È£ÃâµÇ´Â °ÍÀ̱⠶§¹®¿¡ Àμö°¡ ¾øÀ» °æ¿ì´Â °ýÈ£ Á¶
Â÷µµ ÇÊ¿ä°¡ ¾ø´Ù. °ýÈ£°¡ ÀÖÀ¸¸é ¿ÀÈ÷·Á ¾û¶×ÇÑ ¿¡·¯°¡ ¹ß»ýÇϹǷΠÀμö ¾øÀÌ
Position D;¿Í °°Àº ÇüÅ·Π°´Ã¼¸¸ »ý¼ºÇÏ¸é µÈ´Ù. »ý¼ºÀÚ Áß¿¡´Â º¹»ç »ý¼ºÀÚ
(copy constructor)¶ó°í ÇÏ´Â ¾ÆÁÖ Æ¯º°³­ »ý¼ºÀÚµµ ÀÖ´Ù. ¹®¹ýÀº °£´ÜÇÏ´Ù.

Position A=B;

°°Àº Ŭ·¡½ºÇüÀÇ ´Ù¸¥ °´Ã¼ÀÇ °ªÀ» ±×´ë·Î º¹»ç¹Þ´Â ÇüÅ·Π°´Ã¼°¡ »ý¼ºµÈ´Ù.
int i=j;¿Í ºñ½ÁÇÑ ÇüÅÂÀÇ µ¿ÀÛÀ» ÇÏ¸ç ¿©·¯ °³ÀÇ °´Ã¼¸¦ ¶È°°Àº °ªÀ¸·Î Ãʱâ
È­ÇÒ ¶§ ¾ÆÁÖ Æí¸®ÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ´Ù. ±×·¯³ª º¹»ç »ý¼ºÀÚ´Â °ÑÀ¸
·Î´Â °£´ÜÇØ º¸¿©µµ ¼ÓÀ¸·Î´Â ¸»½éÀÇ ¼ÒÁö°¡ ±²ÀåÈ÷ ¸¹Àº »ý¼ºÀÚÀÌ´Ù. ¾î¶² °æ
¿ì¿¡ ¹®Á¦°¡ µÇ´Â°¡ ÇÏ¸é °´Ã¼ ³»¿¡¼­ µ¿ÀûÀ¸·Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇؼ­ »ç¿ëÇÒ ¶§
°°Àº ¸Þ¸ð¸® ¿µ¿ªÀ» µÎ °´Ã¼°¡ µ¿½Ã¿¡ Æ÷ÀÎÆ®ÇÑ´Ù´Â Á¡ÀÌ´Ù. ¹°·Ð ÇØ°áÃ¥µµ ÀÖ
´Ù.


³ª. Æı«ÀÚ

»ý¼ºÀÚ¿Í ¹Ý´ëµÇ´Â Æı«ÀÚ(destructor)¶ó´Â °Íµµ ÀÖ´Ù. Ŭ·¡½º¿¡ ÀÇÇØ »ý¼ºµÈ
objectµµ º¯¼öÀ̹ǷΠ»ý¼ºµÈ ÈÄ¿¡ Åë¿ë ¹üÀ§¸¦ ¹þ¾î³ª¸é ÀÚµ¿ÀûÀ¸·Î ¼Ò¸êµÈ´Ù.
»ý¼ºµÉ ¶§ ´Ù¸¥  º¯¼öµé°ú´Â ´Þ¸® Ưº°ÇÑ ÇÔ¼ö¸¦ È£ÃâÇÏ¿© Ưº°ÇÑ ¹æ¹ýÀ¸·Î ÃÊ
±âÈ­¸¦ ÇÏ¿´À¸¹Ç·Î ¼Ò¸êµÉ ¶§µµ ÀÏ¹Ý º¯¼ö¿Í´Â ´Ù¸¥ Ưº°ÇÑ ¹æ¹ýÀ¸·Î ¼Ò¸êµÇ¾î
¾ß ÇÒ °æ¿ì°¡ ÀÖ´Ù. À̶§ °´Ã¼ÀÇ ¼Ò¸êÀ» ´ã´çÇÏ´Â ÇÔ¼ö¸¦ Æı«ÀÚ¶ó°í ÇÑ´Ù.
»ý¼ºÀÚ°¡ Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼öÀÓ°ú ¸¶Âù°¡Áö·Î Æı«ÀÚµµ Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼öÀÌ
¸ç À̸§Àº Ŭ·¡½º À̸§ ¾Õ¿¡ '~'¸¦ ºÙÀÎ °ÍÀÌ µÈ´Ù. Áï Position Ŭ·¡½ºÀÇ ÆÄ
±«ÀÚ´Â ~Position()ÀÌ´Ù. »ý¼ºÀÚ°¡ °´Ã¼°¡ »ý¼ºµÉ ¶§ ÀÚµ¿À¸·Î È£ÃâµÊ°ú ¸¶Âù
°¡Áö·Î Æı«ÀÚ´Â °´Ã¼°¡ Åë¿ë ¹üÀ§¸¦ ¹þ¾î³ª ¸Þ¸ð¸®·ÎºÎÅÍ Ãß¹æ´çÇÒ ¶§ ÀÚµ¿À¸
·Î È£ÃâµÈ´Ù. ±×·¯³ª Æı«ÀÚ´Â »ý¼ºÀÚ ¸¸Å­À̳ª ºó¹øÇÏ°Ô »ç¿ëµÇÁö´Â ¾ÊÀ¸¸ç
»ý¼ºÀÚ¿¡¼­ µ¿ÀûÀ¸·Î ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏÁö ¾Ê°Å³ª °´Ã¼ ¼Ò¸ê½Ã Ưº°ÇÑ Á¶Ä¡°¡ ÇÊ
¿ä¾ø´Ù¸é ¾ø¾îµµ ¹«°üÇÏ´Ù. Æı«ÀÚ°¡ ²À ÇÊ¿äÇÑ °æ¿ì¸¦ º¸ÀÚ. ´ÙÀ½ ¿¹Á¦¿¡ ÆÄ
±«ÀÚÀÇ ±âº»ÀûÀÎ ¸ð¾çÀ» º¸¿´´Ù.

#include <iostream.h>
#include <conio.h>
#include <string.h>
class Str {
 private:
   char *name;
 public:
   Str(char *);                 // »ý¼ºÀÚ
   ~Str();                      // Æı«ÀÚ
   void outstr()
     { cout << name << '\n'; }
 };
Str::Str(char *initstr)    // »ý¼ºÀÚ¿¡¼­ ¸Þ¸ð¸®¸¦ µ¿ÀûÀ¸·Î ÇÒ´ç
 {
 name= new char[strlen(initstr)+1];
 strcpy(name,initstr);
 }
Str::~Str()                  // Æı«ÀÚ¿¡¼­ ÇÒ´çµÈ ¸Þ¸ð¸®¸¦ ÇØÁ¦
 {
 delete name;       
 }
void main()
{
Str you("Han Sung An");
clrscr();
you.outstr();
}                        // ¿©±â¼­ °´Ã¼  you°¡ ¼Ò¸êµÇ¸ç Æı«ÀÚ È£Ãâ

ÀÌ ¿¹Á¦¿¡¼­ »ç¿ëÇϴ Ŭ·¡½º StrÀº  ¹®ÀÚ¿­ Æ÷ÀÎÅÍ Çϳª¸¸À» µ¥ÀÌÅÍ ¸â¹ö·Î
°¡Áö¸ç »ý¼ºÀÚ, Æı«ÀÚ ±×¸®°í ¹®ÀÚ¿­À»  Ãâ·ÂÇÏ´Â outstrÀ» ¸â¹ö ÇÔ¼ö·Î °¡Áö
°í ÀÖ´Ù. ¿ì¼± Ŭ·¡½ºÀÇ Àüü Å©±â°¡ 2¹ÙÀÌÆ®ÀÓÀ» ÀÌÇØÇÏÀÚ. Ŭ·¡½ºÀÇ Å©±â´Â
µ¥ÀÌÅÍ ¸â¹öµéÀÇ Å©±âÀÇ ÇÕÀ̹ǷΠÆ÷ÀÎÅÍ º¯¼ö ÇϳªÀÇ Å©±âÀÎ 2¹ÙÀÌÆ®°¡ StrŬ
·¡½ºÀÇ Å©±â°¡ µÈ´Ù. Á÷Á¢ cout << sizeof(Str);À» Çغ¸¸é ¾Ë ¼ö ÀÖ´Ù. ¹°·Ð L
arge ¸ðµ¨À̶ó¸é ´ç¿¬È÷ 4¹ÙÀÌÆ®°¡ µÉ °ÍÀÌÁö¸¸ ¸»ÀÌ´Ù. Ŭ·¡½º StrÀº »ç¶÷ÀÇ
À̸§À» ±â¾ïÇÏ°í Ãâ·ÂÇÒ ¸ñÀûÀ¸·Î ¸¸µé¾îÁ³´Ù.
»ç¶÷ÀÇ À̸§À» ±â¾ïÇϱâ À§Çؼ­´Â ¹®ÀÚ ¹è¿­À» »ç¿ëÇÏ´Â ¹æ¹ý°ú ¹®ÀÚÇü Æ÷ÀÎ
Å͸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ Àִµ¥ ¿©±â¼­´Â ²À ÇÊ¿äÇÑ ¸¸Å­¸¸ ¸Þ¸ð¸®¸¦ »ç¿ëÇϱâ
À§ÇØ ¹®ÀÚÇü Æ÷ÀÎÅ͸¦ »ç¿ëÇÑ´Ù. ½ÇÁ¦ÀÇ ¹®ÀÚ¿­Àº ¸Þ¸ð¸®ÀÇ ¾îµò°¡¿¡ ÇÒ´çÀ»
Çؼ­ ÀúÀåÇÏ°í °´Ã¼´Â ±× ¸Þ¸ð¸®ÀÇ ¹øÁö¸¸À» °¡Áö°í ÀÖ´Â ¹æ¹ýÀÌ´Ù. ½ÇÁ¦ ¹®ÀÚ
¿­ÀÌ °´Ã¼ ³»¿¡ Á¸ÀçÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ±×·¡¼­ °´Ã¼°¡ ¸¸µé¾îÁú ¶§ »ý¼ºÀÚ¿¡¼­
¹®ÀÚ¿­À» ´ãÀ» ¸Þ¸ð¸®¸¦ new ¿¬»êÀÚ¸¦ »ç¿ëÇؼ­ µ¿ÀûÀ¸·Î ÇÒ´ç¹Þ´Â´Ù. ÇÒ´çÀ»
¹Þ´Â ¸Þ¸ð¸®ÀÇ Å©±â´Â Àμö·Î ÀüÇØÁø ÃʱâÈ­ ¹®ÀÚ¿­ÀÇ Å©±âº¸´Ù Çϳª ´õ Ä¿¾ß
ÇÑ´Ù(strlen(initstr)+1). ¿Ö³ÄÇϸé ÁÖ¾îÁø ¹®ÀÚ¿­ ¿Ü¿¡µµ null ¹®ÀÚ¸¦ Æ÷ÇÔÇØ
¾ß Çϱ⠶§¹®ÀÌ´Ù.
ÀÌ·¸°Ô ÇÒ´çÇÑ ¸Þ¸ð¸® ¹øÁö¸¦ ¹®ÀÚ Æ÷ÀÎÅÍÇü µ¥ÀÌÅÍ ¸â¹öÀÎ name¿¡°Ô ÁÖ°í ±×
¹øÁö¿¡ Àμö·Î ÀüÇØÁø ÃʱâÈ­ ¹®ÀÚ¿­À» º¹»çÇÏ¸é µÉ °ÍÀÌ´Ù. ¿©±â±îÁöÀÇ ¸Þ¸ð
¸® ¸ð¾çÀº ´ÙÀ½°ú °°´Ù.

you °´Ã¼
¦£¦¡¦¡¦¡¦¤
¦¢      ¦§¦¡¦¡¦¡¦¡¦¡¦¤
¦¦¦¡¦¡¦¡¦¥          ¦¢
                  \¦¢/  new ¿¬»êÀÚ°¡ µ¿ÀûÀ¸·Î ÇÒ´çÇØÁØ ¸Þ¸ð¸®
                   ¦¡¦¡¦¡¦¡¦¡¦¡¦¡
                    HAN SUNG AN                                 
                   ¦¡¦¡¦¡¦¡¦¡¦¡¦¡

"Han Sung An"À̶ó´Â ¹®ÀÚ¿­ÀÌ ÀúÀåµÈ ¸Þ¸ð¸® °ø°£Àº new ¿¬»êÀÚ¿¡ ÀÇÇØ µ¿Àû
À¸·Î ÇÒ´çµÈ ¸Þ¸ð¸®ÀÌ¸ç ½ÇÁ¦ ±× ¹øÁö°¡ ¾îµðÀÎÁö´Â ¾Ë ¼ö ¾øÀ¸³ª ¾î·µç ±×
¹øÁö¸¦ Str Ŭ·¡½ºÀÇ µ¥ÀÌÅÍ ¸â¹öÀÎ nameÀÌ °®°Ô µÈ´Ù. À̶§ µ¿ÀûÀ¸·Î ÇÒ´çµÈ
¸Þ¸ð¸®´Â you °´Ã¼¿Í ¹°¸®ÀûÀ¸·Î ¿¬°üÀÌ ¾øÀ¸¸ç ´Ù¸¸ you °´Ã¼ÀÇ ¸â¹öÀÎ name
¿¡ ÀÇÇØ Æ÷ÀÎÆ®µÇ´Â ³í¸®Àû °ü°è°¡ ÀÖÀ» »ÓÀÌ´Ù. ÇÒ´çµÈ ¸Þ¸ð¸®´Â °´Ã¼ ¿ÜºÎ
¿¡ º°µµ·Î Á¸ÀçÇÏ´Â °ÍÀÌ´Ù.


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


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