Ŭ·¡½º´Â Çϳª°¡ Á¸ÀçÇÏÁö¸¸ Ŭ·¡½ºÇüÀÇ º¯¼öÀÎ 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();
}
ÀÌ¾î¼ °è¼ÓµË´Ï´Ù. ==============>>>>>>>
--------------------------------------------------------------------------------