[C++]°­ÁÂ(13)<--»ý¼ºÀÚ




Ŭ·¡½º´Â Çϳª°¡ Á¸ÀçÇÏÁö¸¸ Ŭ·¡½ºÇüÀÇ º¯¼öÀÎ instance´Â ¿©·¯ °³ Á¸ÀçÇÒ
¼ö ÀÖ´Ù. intÇüÀº ÇϳªÁö¸¸ Á¤¼öÇü º¯¼ö´Â ¾ó¸¶µçÁö ÀÖÀ» ¼ö ÀÖ´Â °Í°ú °°´Ù.
±×·¡¼­ ´ÙÀ½°ú °°ÀÌ Å¬·¡½ºÇüÀÇ instance¸¦ ¿©·¯ °³ »ý¼º½Ãų ¼öµµ ÀÖ´Ù.

Position A,B,C;

À̶§ ¸Þ¸ð¸®»ó¿¡ ±¸ÇöµÇ´Â ¸ð¾çÀ» º¸ÀÚ(±×¸² 18-1).

                   class position
                  ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤        
                  ¦¢int px        ¦¢         
                  ¦¢int py        ¦¢        
                  ¦¢char ch       ¦¢        
                  ¦¢void outpos() ¦¢        
                  ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥        

        object A      object B      object C
       ¦£¦¡¦¡¦¡¦¡¦¤  ¦£¦¡¦¡¦¡¦¡¦¤  ¦£¦¡¦¡¦¡¦¡¦¡¦¤
       ¦¢int px  ¦¢  ¦¢int px  ¦¢  ¦¢ int px   ¦¢    
       ¦¢int py  ¦¢  ¦¢int py  ¦¢  ¦¢ int py   ¦¢     
       ¦¢char ch ¦¢  ¦¢char ch ¦¢  ¦¢ char ch  ¦¢   
       ¦¦¦¡¦¡¦¡¦¡¦¥  ¦¦¦¡¦¡¦¡¦¡¦¥  ¦¦¦¡¦¡¦¡¦¡¦¡¦¥   

°¢°¢ÀÇ instance´Â Ŭ·¡½ºÀÇ µ¥ÀÌÅÍ ¸â¹ö¸¸À» °¡Áø´Ù. ¸â¹ö ÇÔ¼ö´Â Ŭ·¡½º¿¡
Çϳª¸¸ µÎ°í ¸ðµç instance°¡ °øÀ¯ÇÑ´Ù. µ¥ÀÌÅÍ´Â °¢°¢ÀÇ instance¸¶´Ù ´Ù¸¦
¼ö Àֱ⠶§¹®¿¡ °¢°¢ÀÇ instance°¡ º°µµÀÇ ¸Þ¸ð¸®¿¡ ÀڽŸ¸ÀÇ µ¥ÀÌÅ͸¦ µ¶ÀÚÀû
À¸·Î °¡Á®¾ß ÇÑ´Ù. ÇÏÁö¸¸ ¸â¹ö ÇÔ¼ö´Â instance°¡ ´Þ¶óµµ ¶È°°ÀÌ Àû¿ëµÇ¹Ç·Î
Ŭ·¡½º¿¡ Çϳª¸¸ ÀÖÀ¸¸é µÇ¸ç °³º° instance°¡ ÀÏÀÏÀÌ ¸â¹ö ÇÔ¼ö¸¦ °¡Áú ÇÊ¿ä
°¡ ¾ø´Ù. ±×·¡¼­ instanceÀÇ Å©±â´Â Ŭ·¡½ºÀÇ µ¥ÀÌÅÍ ¸â¹öµéÀÇ Å©±â¸¦ ¸ðµÎ ´õ
ÇÑ Å©±â°¡ µÈ´Ù. sizeof(Position)ÀÇ °á°ú´Â 5ÀÌ´Ù.
object¶ó´Â ¿ë¾î´Â instance¿Í °°Àº ¸»ÀÌ´Ù. ¶È°°Àº ´ë»óÀ» ÁöĪÇÏ´Â ¸»À̱â
´Â ÇÏÁö¸¸ instance´Â Ŭ·¡½º°¡ ¸Þ¸ð¸®»ó¿¡ ±¸ÇöµÇ¾ú´Ù´Â ÀǹÌÀ̸ç object¶õ
Ŭ·¡½ºÀÇ Æ¯¼ºÀ» °¡Áø µ¥ÀÌÅÍ¿Í Äڵ带 Æ÷ÇÔÇÏ¸ç µ¶¸³ÀûÀ¸·Î ÇൿÇÒ ¼ö ÀÖ´Ù´Â
Àǹ̰¡ ´õ °­ÇÏ´Ù.
object¶õ ¿ì¸® ¸»·Î "°´Ã¼"¶ó°í ¹ø¿ªÇÏ´Â °ÍÀÌ ÀϹÝÀûÀÎ Ãß¼¼À̹ǷΠÇÊÀÚµµ
°´Ã¼¶ó´Â ¿ë¾î¸¦ »ç¿ëÇÏ°Ú´Ù. ÇÏÁö¸¸ °´Ã¼º¸´Ù´Â °³Ã¼(ËÁô÷)¶ó´Â Ç¥ÇöÀÌ ´õ Àû
´çÇÏ´Ù°í ÁÖÀåÇÏ´Â »ç¶÷ÀÌ ÀÖÀ¸¸ç °¡²û °³Ã¼¶ó´Â Ç¥ÇöÀÌ »ç¿ëµÇ±âµµ ÇÑ´Ù. ÇÊ
ÀÚ°¡ »ý°¢Çϱ⿡´Â object¸¦ "°´Ã¼"¶ó°í ¹ø¿ªÇÏ´Â °ÍÀº ¿µ¾î¸¦ ±×´ë·Î ¹ø¿ªÇÑ
µíÇÑ ´À³¦ÀÌ µé¸ç "°³Ã¼"°¡ ´õ Àû´çÇÑ Ç¥ÇöÀ̶ó´Â »ý°¢ÀÌ µç´Ù.

´Ù. ¸â¹ö ¾×¼¼½º

ÀÌ¹Ì ¾Õ¿¡¼­ º¸¾Æ ¿Ô°ÚÁö¸¸ °´Ã¼ÀÇ ¸â¹ö¸¦ ÂüÁ¶ÇÏ´Â ¹æ¹ýÀº ±¸Á¶Ã¼ º¯¼ö°¡ ¸â
¹ö¸¦ ÂüÁ¶ÇÏ´Â ¹æ¹ý°ú µ¿ÀÏÇÏ´Ù. ±×¸®°í ¸â¹ö ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ¹æ¹ýµµ µ¥ÀÌÅÍ
¸â¹ö¸¦ ÂüÁ¶ÇÏ´Â ¹æ¹ý°ú µ¿ÀÏÇÏ´Ù.

Position HERE;           // °´Ã¼ÀÇ »ý¼º
HERE.px = 3;             // data ¸â¹ö ÂüÁ¶
HERE.outpos();           // ¸â¹ö ÇÔ¼ö È£Ãâ(=ÂüÁ¶)

°Ô´Ù°¡ ±¸Á¶Ã¼¸¦ Æ÷ÀÎÆ®ÇÏ´Â Æ÷ÀÎÅÍ º¯¼ö¿Í -> ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© ¸â¹ö¸¦ Âü
Á¶ÇÏ´Â ¹æ¹ý±îÁöµµ µ¿ÀÏÇÏ´Ù.

Position *ptr,HERE;       // PositionÇüÀÇ °´Ã¼¿Í Æ÷ÀÎÅÍ º¯¼ö »ý¼º
ptr = HERE;               // Æ÷ÀÎÅÍ º¯¼ö ÃʱâÈ­
ptr -> px = 3;            // data ¸â¹ö ÂüÁ¶
ptr -> outpox();          // ¸â¹ö ÇÔ¼ö È£Ãâ(=ÂüÁ¶)

¿©±â±îÁö´Â ¾ÆÁÖ Æò¹üÇÑ ³»¿ëÀ̹ǷΠº°´Ù¸¥ ³ë·ÂÀ» ÇÏÁö ¾Ê¾Æµµ Àб⸸ Çϸé
½±°Ô ÀÌÇØ°¡ °¥ °ÍÀÌ´Ù. ¸â¹ö¸¦ ÂüÁ¶ÇÏ´Â ¶Ç ´Ù¸¥  ¹æ¹ýÀ» º¸ÀÚ. C++¿¡¼­ Ãß°¡
µÈ ¿¬»êÀÚÀÎ .*¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀε¥ ±×´ÙÁö Å« Àǹ̴ ¾øÀ¸¸ç »ç¿ë ºóµµ°¡ ³·
À¸¹Ç·Î ¸ô¶óµµ º°·Î ¼ÕÇغ¼ ÀÏÀº ¾øÀ¸¹Ç·Î ±ÍÂúÀ¸¸é Áö³ªÃĵµ »ó°ü¾ø´Ù.
ÀÌ ¹æ¹ýÀº Ŭ·¡½ºÀÇ ¸â¹ö¸¦ Æ÷ÀÎÆ®ÇÏ´Â Æ÷ÀÎÅÍ º¯¼ö(ptrÀ̶ó°í ÇÏÀÚ.)¸¦ ¼±¾ð
ÇÏ¿© ptr·ÎºÎÅÍ ¸â¹ö¸¦ ÂüÁ¶Çس»´Â ¹æ¹ýÀÌ´Ù. Ŭ·¡½ºÀÇ ¸â¹ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍ º¯
¼ö´Â class::* ·Î Çϸç Ŭ·¡½º ¸â¹öÀÇ ¹øÁö°ªÀº &class::member°¡ µÈ´Ù. Æ÷ÀÎ
ÅÍ º¯¼ö¿¡ ÀÇÇÑ ¸â¹öÀÇ ÂüÁ¶´Â object.*ptrÀÌ´Ù. ´ÙÀ½Àº ¿¹Á¦ 18-2¸¦ ¶È°°ÀÌ
Â¥ º¸µÇ px ¸â¹ö¿¡ ´ëÇÑ ÂüÁ¶¸¦ Á÷Á¢ ÇÏÁö ¾Ê°í Æ÷ÀÎÅÍ º¯¼ö¸¦ »ç¿ëÇÑ °ÍÀÌ´Ù.
main ÇÔ¼ö¸¸ º¸ÀδÙ.

void main()
{
clrscr();
int Position::*ptr;     // ¸â¹ö¿¡ ´ëÇÑ Æ÷ÀÎÅÍ º¯¼ö ¼±¾ð
ptr = &Position::px;    // Æ÷ÀÎÅÍ º¯¼öÀÇ ÃʱâÈ­
Position HERE;   
HERE.*ptr = 10;         // Æ÷ÀÎÅÍ º¯¼ö¿¡ ÀÇÇÑ ¸â¹ö ÂüÁ¶
HERE.py = 10;
HERE.ch = 'S';
HERE.outpos();   
}

**********************************************
**********************************************
2-3 »ý¼ºÀÚ, Æı«ÀÚ

°¡. »ý¼ºÀÚ

Ŭ·¡½ºÀÇ ¼±¾ð¿¡ ÀÇÇØ Å¬·¡½ºÇüÀ» ÄÄÆÄÀÏ·¯¿¡°Ô ¾Ë¸®°í instance¸¦ »ý¼ºÇÔÀ¸
·Î½á Ŭ·¡½º°¡ ±¸ÇöµÇ°í ÀÌÈĺÎÅÍ Å¬·¡½ºÇüÀÇ object¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·±
µ¥ ¿¹Á¦ 18-4ÀÇ main ÇÔ¼ö¿¡¼­ instance »ý¼º ÈÄÀÇ µ¿ÀÛÀ» º¸ÀÚ.

HERE.px = 10;
HERE.py = 10;
HERE.ch = 'S';
HERE.outpos();

object³»ÀÇ µ¥ÀÌÅÍ ¸â¹ö¿¡ ¾î¶°ÇÑ °ªÀ» Á¤ÀÇÇØÁØ ÈÄ ¸â¹ö ÇÔ¼ö¸¦ È£ÃâÇÏ°í ÀÖ
´Ù. object ³»ÀÇ µ¥ÀÌÅÍ ¸â¹ö´Â ¾î¶² °ªÀ» ´ã°íÀÚ ÁغñµÈ °ÍÀ̹ǷΠ°ªÀÌ ´ëÀÔ
µÇÁö ¾Ê°í¼­´Â »ç¿ëÇÑ´Ù´Â °Í ÀÚü°¡ ¹«ÀǹÌÇØÁø´Ù. ±×·¡¼­ instance »ý¼º Á÷
ÈÄ¿¡ ÀǹÌÀÖ´Â ¾î¶² °ªÀ» ´ëÀÔÇØ ÁÖ¾úÀ¸¸ç ÀÌ °úÁ¤Àº ³Ê¹«³ª ´ç¿¬ÇÏ°í instance
»ý¼º ÈÄ¿¡ ÇÊ¿¬ÀûÀ¸·Î À̾îÁö´Â °úÁ¤ÀÌ´Ù. ±×·¡¼­ ¾îÂ÷ÇÇ instance »ý¼º ÈÄ¿¡
µ¥ÀÌÅÍ ¸â¹ö¿¡ ¾î¶² °ªÀ» Áà¾ß ÇÑ´Ù¸é instance »ý¼º°ú µ¥ÀÌÅÍ ¸â¹ö¿¡ °ªÀ» ºÎ
¿©ÇÏ´Â °úÁ¤À» Çѹø¿¡ ÅëÇÕÇØ ¹ö¸°´Ù°í ÇÏ´õ¶óµµ ¹®Á¦µÉ °ÍÀº ¾øÀ¸¸ç ¿©·¯ ¸é
¿¡¼­ Æí¸®ÇØÁú °ÍÀÌ´Ù.
instance¸¦ »ý¼ºÇÏ´Â °úÁ¤Àº ¸Þ¸ð¸®»ó¿¡ Ŭ·¡½º°¡ °¡Áø µ¥ÀÌÅÍ ¸â¹ö°¡ µé¾î°¥
ÀÚ¸®¸¦ È®º¸Çϱâ´Â ÇÏÁö¸¸ µ¥ÀÌÅ͸¦ ÃʱâÈ­ÇÏÁö´Â ¾Ê°í ¿ø·¡ ¸Þ¸ð¸®¿¡ µé¾î ÀÖ
´ø °ª, Áï ¾²·¹±â°ªÀ» ±×´ë·Î À¯ÁöÇÑ´Ù. int k; Çϸé Á¤¼öÇü º¯¼ö k°¡ µé¾î°¥
¸Þ¸ð¸® 2¹ÙÀÌÆ®¸¦ ÇÒ´çÀº ÇÏÁö¸¸ ÃʱâÈ­´Â ÇÏÁö ¾Ê´Â´Ù´Â °ÍÀ» ¿¬»óÇÏ¸é ½±°Ô
ÀÌÇØ°¡ °¥ °ÍÀÌ´Ù. ¼±¾ð°ú µ¿½Ã¿¡ ÃʱâÈ­¸¦ ÇÏ°íÀÚ ÇÑ´Ù¸é int k = 3; µîÀ¸·Î
ÇØ¾ß ÇÑ´Ù.
Ŭ·¡½ºÀÇ °æ¿ì¿¡µµ ÃʱâÈ­ÀÇ ¹®Á¦´Â ¿©ÀüÈ÷ ¿©Å¸ÀÇ ´Ù¸¥ µ¥ÀÌÅÍ Å¸ÀÔ°ú ¸¶Âù
°¡Áö·Î ¼¼½ÉÇÏ°Ô ½Å°æÀ» ½á ÁÖ¾î¾ß ÇÑ´Ù. Ŭ·¡½ºº¸´Ù Å©±â°¡ ÀÛÀº ¿©Å¸ÀÇ ´Ù¸¥
µ¥ÀÌÅÍ Å¸ÀÔ(Á¤¼ö, ½Ç¼ö, ¹®ÀÚÇü µîµî)Àº ´ëÀÔ(Àß ¾Ë°ÚÁö¸¸ int k = 3; µî¿¡
¾²ÀÎ '='Àº ´ëÀÔ ¿¬»êÀÚ°¡ ¾Æ´Ï´Ù. ´Ù¸¸ ÃʱâÈ­½Ä¿¡ »ç¿ëµÈ ±¸µÎÁ¡ÀÏ »ÓÀÌ´Ù.)
¿¡ ÀÇÇØ ÀÌ·¯ÇÑ ÃʱâÈ­¸¦ ÇØ°áÇÏÁö¸¸ ¿©·¯ °¡Áö µ¥ÀÌÅÍ ¸â¹ö¿Í º¹ÀâÇÑ ±¸Á¶¸¦
°¡Áø Ŭ·¡½º´Â ´ëÀÔ°ú °°Àº °£´ÜÇÑ ¹æ¹ýÀ¸·Î´Â ÃʱâÈ­¸¦ ÇϱⰡ °ï¶õÇϱ⠶§¹®
¿¡ ÃʱâÈ­¸¦ Àü¹®ÀûÀ¸·Î ÇØÁÖ´Â ÇÔ¼ö°¡ ÇÊ¿äÇÏ´Ù. instance¸¦ ÃʱâÈ­½ÃÄÑ ÁÖ´Â
Ưº°ÇÑ ¸â¹ö ÇÔ¼ö°¡ Àִµ¥ ÀÌ ¸â¹ö ÇÔ¼ö¸¦ »ý¼ºÀÚ(constructor)¶ó°í ÇÑ´Ù.
»ý¼ºÀÚ´Â ÀϹÝÀûÀÎ ÇÔ¼ö¿Í´Â ´Ù¸¥ Ư¡µéÀÌ ¸¹ÀÌ ÀÖÁö¸¸ ±× Áß¿¡¼­µµ Ç¥¸é»ó
µå·¯³ª´Â °¡Àå Å« Â÷À̴ Ŭ·¡½ºÀÇ À̸§°ú µ¿ÀÏÇÑ À̸§À» »ç¿ëÇÑ´Ù´Â °ÍÀÌ´Ù.
»ý¼ºÀÚ´Â °´Ã¼°¡ ¸¸µé¾îÁú ¶§ ÀÚµ¿À¸·Î È£ÃâµÇ¸ç °´Ã¼¸¦ ÃʱâÈ­½ÃÅ°´Â °ÍÀÌ ÁÖ
ÀÓ¹«ÀÌ´Ù. ÇϳªÀÇ instance°¡ »ý¼ºµÇ´Â °úÁ¤Àº ´ÙÀ½°ú °°´Ù.

¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¤        ¦£¦¡¦¡¦¡¦¡¦¡¦¤        ¦£¦¡¦¡¦¡¦¡¦¡¦¤
¦¢            ¦¢       \¦¢          ¦¢       \¦¢          ¦¢
¦¢ class ¼±¾ð ¦§¦¡¦¡¦¡¦¡¦©ÀνºÅϽº  ¦§¦¡¦¡¦¡¦¡¦© »ý¼ºÀÚ   ¦¢
¦¢            ¦¢       /¦¢    »ý¼º  ¦¢       /¦¢     È£Ãâ ¦¢
¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¥        ¦¦¦¡¦¡¦¡¦¡¦¡¦¥        ¦¦¦¡¦¡¦¡¦¡¦¡¦¥
classÇüÀÇ µ¥ÀÌÅÍÇüÀ»     ¸Þ¸ð¸®»ó¿¡ ±¸Çö        µ¥ÀÌÅÍ ¸â¹öÀÇ     
ÄÄÆÄÀÏ·¯¿¡°Ô ¾Ë¸²                                  ÃʱâÈ­

ÀÏ´Ü »ý¼ºÀÚ¸¦ »ç¿ëÇÑ ¿¹Á¦¸¦ º¸ÀÚ.

#include <stdio.h>
#include <iostream.h>
#include <conio.h>

class Position
{

public:
int px;
int py;
char ch;
void outpos();
Position( int, int, char);     // »ý¼ºÀÚ ÇÔ¼ö
};

void Position::outpos()   
{
gotoxy( px, py);
putch( ch);
}

Position::Position( int x, int y, char c)  // »ý¼ºÀÚ ÇÔ¼öÀÇ Á¤ÀÇ
{
px = x;    // data member¸¦ ÃʱâÈ­½ÃŲ´Ù.
py = y;
ch = c;
}

void main()
{
clrscr();
Position HERE( 10, 10, 'S'); // °´Ã¼ÀÇ »ý¼º°ú µ¿½Ã¿¡ ÃʱâÈ­
HERE.outpos();
}


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


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