[C++]2ºÎ°­ÁÂ(45)<--[ ] ¿¬»êÀÚ





¶ó. [ ] ¿¬»êÀÚ

[ ] ¿¬»êÀÚ´Â ³»ºÎÀûÀ¸·Î Æ÷ÀÎÅÍ ¿¬»êÀ¸·Î µ¿ÀÛÇϴ ÷ÀÚ ¿¬»êÀÚÀ̸ç ÇÇ¿¬»ê
ÀÚ¸¦ µÑ ÃëÇÏ´Â ÀÌÇ× ¿¬»êÀÚÀÌ´Ù. ptr[i] ¿¬»êÀº Á¤ÀÇ¿¡ ÀÇÇØ *(ptr+i)¿Í °°Àº
µ¿ÀÛÀ» Çϵµ·Ï µÇ¾î ÀÖ´Ù.
±×·¡¼­ [ ] ¿¬»êÀÚÀÇ ÇÇ¿¬»êÀÚ µÑ Áß Çϳª´Â ¹Ýµå½Ã Æ÷ÀÎÅÍ°ªÀ̾î¾ß ÇÏ¸ç ³ª
¸ÓÁö Çϳª´Â Á¤¼ö¿©¾ß ÇÑ´Ù. STRÇüÀÇ °´Ã¼ a°¡ ÀÖÀ» ¶§ ºñ·Ï ÀÌ °´Ã¼°¡ ¹®ÀÚ¿­
À» Ç¥ÇöÇÏ´Â °´Ã¼ÀÌÁö¸¸ °´Ã¼¿¡ Á÷Á¢ [ ] ¿¬»êÀÚ¸¦ »ç¿ëÇÒ ¼ö´Â ¾ø´Ù. a[3] µî
ÀÇ ¿¬»ê½ÄÀ» ¾µ °æ¿ì [ ] ¿¬»êÀÚ´Â STRÇüÀÇ °´Ã¼¿Í Á¤¼ö¿ÍÀÇ ¿¬»êÀ» ÇÒ ¼ö ÀÖ
´Â ´É·ÂÀÌ ¾øÀ¸¹Ç·Î ¿¡·¯°¡ Ãâ·ÂµÉ °ÍÀÌ´Ù. a °´Ã¼ÀÇ µ¥ÀÌÅÍ ¸â¹öÀÎ strÀº Æ÷
ÀÎÅÍ °ª(¹®ÀÚÇü ¹è¿­ÀÇ ½ÃÀÛ ¹øÁö¸¦ ³ªÅ¸³»´Â Æ÷ÀÎÅÍ »ó¼ö)À̹ǷΠa.str[3]°ú
°°Àº ¿¬»êÀº °¡´ÉÇÏ´Ù.
ÇÏÁö¸¸ Àǹ̻ó STRÇüÀÇ °´Ã¼°¡ °ð ¹®ÀÚ¿­À̹ǷΠa[3]°ú °°ÀÌ °´Ã¼¸¦ Á÷Á¢ [ ]
¿¬»êÀÚÀÇ ÇÇ¿¬»êÀÚ·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù¸é ÁÁÁö ¾Ê°Ú´Â°¡? ±×·¡¼­ STR Ŭ·¡½ºÀÇ
¸â¹ö ¿¬»êÀÚ ÇÔ¼ö·Î []¸¦ Á¤ÀÇÇÏ¿´´Ù.

#include <iostrem.h>
#include <string.h>
class STR
{
private:
 char str[30];
public:
 STR() {}
 STR(char *s)
 {
   strcpy(str,s);
 }
 void outstr()
 {
   cout << str << endl;
 }
char operator [](int i);
};
char STR::operator [](int i)      // [] ¿¬»êÀÚÀÇ Á¤ÀÇ
{
if (i>strlen(str) || i<0)       // ¹üÀ§ check
{
 cout << endl << "out of range";  
 return ' ';     // ¹üÀ§ ¹ÛÀ̸é space ¸¦ ¸®ÅÏ
}
return str[i];    // ¹üÀ§ ¾ÈÀÌ¸é ¹®ÀÚ¿­ ³»ÀÇ ¹®ÀÚ¸¦ ¸®ÅÏ
}
void main()
{
STR a("korean girl is beautiful");
for (int k=-3;k<30;k++)
cout << a[k];    // a °´Ã¼ÀÇ k¹®ÀÚ¸¦ Ãâ·ÂÇÑ´Ù.
}

[ ] ¿¬»êÀÚ´Â STR Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼ö·Î Á¤ÀǵǾúÀ¸¸ç STRÇüÀÇ °´Ã¼¿Í Á¤¼ö¸¦
ÇÇ¿¬»êÀÚ·Î ÃëÇÏ¿© STR °´Ã¼ÀÇ Æ¯Á¤ À§Ä¡ÀÇ ¹®ÀÚ Çϳª¸¦ Àо´Ù. Ãâ·Â °á°ú
´Â ´ÙÀ½°ú °°´Ù.

out of range
out of range
out of range korean girl is beautiful
out of range
out of range
out of range
out of range
out of range

´õ±¸³ª [ ] ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇϸ鼭 ÷ÀÚ°¡ ¹®ÀÚ¿­ÀÇ ¹üÀ§¸¦ ³Ñ¾î¼¹À» °æ¿ì
ÀÇ ¿¡·¯ 󸮱îÁöµµ ÇØÁÖ°í ÀÖ´Ù. C++Àº ¹è¿­ÀÇ ÇÑ°è Á¡°ËÀ» ÇÏÁö ¾Ê±â ¶§¹®¿¡
±æÀÌ°¡ 10ÀÎ ¹®ÀÚ¿­ÀÌ´õ¶óµµ str[50] µî°ú °°Àº ¿¬»êÀ» ÇÒ ¼ö ÀÖµµ·Ï µÇ¾î ÀÖ
´Âµ¥ ÀÌ·± Á¡ÀÌ ¼Óµµ¸¦ ºü¸£°Ô ÇÏÁö¸¸ ¶§·Î´Â ¹«Ã´ À§ÇèÇÑ ¿¬»êÀÌ µÉ ¼öµµ ÀÖ
´Ù. ±×·¡¼­ ¹®ÀÚ¿­ÀÇ ±æÀ̸¦ ÃÊ°úÇϴ ÷ÀÚ¸¦ ÁöÁ¤Çϰųª À½¼öÀÇ Ã·ÀÚ¸¦ ÁöÁ¤
ÇÒ ¶§´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇϵµ·Ï ÇÏ¿´´Ù.
main ÇÔ¼öÀÇ k ·çÇÁ¿¡¼­ k°¡ -3¿¡¼­ 30±îÁö º¯Çϸç a[k] ¿¬»êÀ» ¼öÇàÇϴµ¥
ÀÌ Áß¿¡¼­ k°¡ À½¼öÀÎ °æ¿ì¿Í 25 ÀÌ»óÀÎ °æ¿ì´Â ¿¡·¯·Î °£ÁÖµÇ¾î ¿¡·¯ ¸Þ½ÃÁö
°¡ Ãâ·ÂµÈ´Ù.


Á¦ 5 Àå
OOP

ÀÌ Àå¿¡¼­ ³íÇÏ´Â ³»¿ëÀº ´Ù¼Ò OOPÀÇ ±âÃÊÀûÀÎ »çÇ×°ú´Â ¹«°üÇÑ ³»¿ëµéÀÌ´Ù.
³í¸®ÀÇ Àü°³ ¼ø¼­»ó Ŭ·¡½º¿Í »ó¼ÓÀ» ¼³¸íÇÏ´Â Áß°£ Áß°£¿¡ »ðÀԵǾî¾ß ¿ÇÁö¸¸
ÀÚÄ©Çϸé óÀ½ OOP¸¦ ´ëÇÏ´Â »ç¶÷¿¡°Ô È¥¶õÀÇ ¼ÒÁö°¡ ÀÖÀ» °Í °°¾Æ ±»ÀÌ ÇÑ Àå
À» ¸¶·ÃÇÏ¿© µû·Î ³íÇÏ°íÀÚ ÇÑ´Ù. ÇÊÀÚÀÇ ½Ç·ÂÀÌ ºÎÁ·ÇÏ¿© Á¤È®ÇÑ Çؼ³À» ÇÏÁö
¸øÇÑ ºÎºÐÀÌ ¸¹ÀÌ ÀÖÀ½À» ÀÌÇØÇØÁֱ⠹ٶõ´Ù.


********************************************************
********************************************************
5-1 Á¤Àû ¸â¹ö


°¡. Á¤Àû µ¥ÀÌÅÍ ¸â¹ö

Ŭ·¡½º·ÎºÎÅÍ °´Ã¼°¡ »ý¼ºµÉ ¶§ °´Ã¼´Â Ŭ·¡½º¿¡ Á¤ÀǵǾî ÀÖ´Â µ¥ÀÌÅÍ ¸â¹ö
ÀÇ ÃÑ Å©±â ¸¸Å­ÀÇ ¸Þ¸ð¸®¸¦ ÇÒ´ç¹ÞÀ¸¸ç ¸â¹ö ÇÔ¼ö´Â ¸ðµç °´Ã¼°¡ °øÀ¯ÇÑ´Ù.
Áï, ÇÑ °´Ã¼°¡ »ý¼ºµÇ¸é °´Ã¼´Â Ŭ·¡½ºÀÇ ¸ðµç µ¥ÀÌÅÍ ¸â¹ö¸¦ °³º°ÀûÀ¸·Î ¼ÒÀ¯
ÇÏ°Ô µÈ´Ù. ±×·¯³ª ¶§·Î´Â µ¥ÀÌÅÍ ¸â¹öµµ ¸ðµç °´Ã¼¿¡¼­ °øÀ¯ÇØ¾ß ÇÒ ÇÊ¿ä°¡
Àִµ¥ ¾î¶² °æ¿ì³Ä¸é °¢ °´Ã¼ÀÇ ÀÛ¾÷ °á°ú ³»Áö´Â ÇöÀç »óŸ¦ ÃÑüÀûÀ¸·Î ³ª
Ÿ³»´Â ¸â¹ö°¡ ÇÊ¿äÇÒ ¶§ÀÌ´Ù.
¿¹¸¦ µé¾î Position Ŭ·¡½º°¡ È­¸é»óÀÇ ÇÑ À§Ä¡¿Í Ãâ·ÂµÈ ¹®ÀÚ¸¦ ³ªÅ¸³»´Â Ŭ
·¡½º·Î Á¤ÀǵǾú°í PositionÇüÀÇ °´Ã¼°¡ ¿©·¯ °³ »ý¼ºµÉ ¶§ ¸î°³ÀÇ °´Ã¼°¡ Çö
Àç±îÁö »ý¼ºµÇ¾ú´ÂÁöÀÇ °³¼ö¸¦ ¾îµò°¡¿¡ º¸°üÀ» ÇØ¾ß ÇÑ´Ù°í ÇÏÀÚ.
»ý¼ºµÇ¾î ÀÖ´Â °´Ã¼ÀÇ °³¼ö¸¦ º¸°üÇÏ´Â º¯¼ö numpos¸¦ ¸¸µé¾î¼­ ÀÌ ¹®Á¦¸¦ ÇØ
°á ÇÒ ¼ö ÀÖ´Ù. ±×·¸´Ù¸é numpos´Â °ú¿¬ ¾îµð¿¡ À§Ä¡½ÃÄÑ¾ß ³í¸®ÀûÀ¸·Î ¾Æ¹«·±
¹®Á¦°¡ ¾øÀ»±î. Ŭ·¡½º³»¿¡ µÐ´Ù¸é »ý¼ºµÇ´Â °´Ã¼¸¶´Ù numpos µ¥ÀÌÅÍ ¸â¹ö¸¦
°¡Áö°Ô µÉ °ÍÀε¥ °´Ã¼¸¶´Ù º°µµÀÇ ´Ù¸¥ °ªÀ» °¡ÁöÁöµµ ¾ÊÀ» °ÍÀÌ°í °´Ã¼ ³»ºÎ
¿¡¼­´Â º°·Î Àǹ̵µ ¾ø´Â ÀÌ °ªÀ» °´Ã¼¸¶´Ù °¡Áø´Ù´Â °ÍÀº ÀÏÁ¾ÀÇ ³¶ºñÀÌ´Ù.
»Ó¸¸ ¾Æ´Ï¶ó ÇÑ º¯¼ö°¡ ¿©·¯ °´Ã¼¿¡ Èð¾îÁ® ÀÖÀ¸¹Ç·Î °ü¸®Çϱ⵵ ±ÍÂú¾ÆÁø´Ù.
±×·¡¼­ Ŭ·¡½º³»¿¡ µÐ´Ù´Â °ÍÀº ºÒÇÕ¸®ÇÏ´Ù. Ŭ·¡½º³»¿¡ µÎÁö ¾Ê´Â´Ù¸é Ŭ·¡
½º ¹Ù±ù¿¡ Àü¿ª º¯¼ö·Î numpos¸¦ ¼±¾ðÇØ µÎ°í °´Ã¼°¡ »ý±æ ¶§¸¶´Ù ÀÌ °ªÀ» 1
Áõ°¡½ÃÅ°°í °´Ã¼°¡ Æı«µÉ ¶§¸¶´Ù ÀÌ °ªÀ» 1¾¿ °¨¼Ò½ÃÅ°¸é µÈ´Ù. °ú¿¬ Àü¿ª º¯
¼ö¸¦ ¾²¸é ±ú²ýÇÏ°Ô ÇØ°áµÈ´Ù.
ÇÏÁö¸¸ ÀÌ ¹æ¹ýÀÌ ¹®Á¦°¡ µÇ´Â °ÍÀº ¿Ö Ŭ·¡½º¿Í °ü°è ÀÖ´Â, Ŭ·¡½º·ÎºÎÅÍ »ý
¼ºµÈ °´Ã¼ÀÇ °³¼ö¸¦ ±â¾ïÇÏ´Â º¯¼ö¸¦ Ŭ·¡½º ¹Ù±ù¿¡ µÎ´À³Ä ÇÏ´Â °ÍÀÌ´Ù. Àü¿ª
º¯¼ö·Î ¼±¾ðÇØ ¹ö¸®¸é Ŭ·¡½º°¡ ÇÁ·Î±×·¥ÀÇ ºÎÇ°ÀÌ µÈ´Ù´Â µ¶¸³¼º¿¡ À§¹èµÈ´Ù.
Àü¿ª º¯¼ö±â ¶§¹®¿¡ ÀÌ º¯¼ö´Â ¼û±â´Â °ÍÀÌ ºÒ°¡´ÉÇØÁö°í ¾Æ¹« ÇÔ¼ö³ª ÀÌ º¯¼ö
¸¦ ¾×¼¼½ºÇÒ ¼ö°¡ ÀÖ´Ù. ±×·¡¼­ Àü¿ª º¯¼ö·Î ¼±¾ðÇÏ´Â ¹æ¹ý°ú Ŭ·¡½º³»¿¡ µÎ´Â
¹æ¹ýÀÇ ÀýÃæ¾ÈÀÎ Á¤Àû µ¥ÀÌÅÍ ¸â¹ö¸¦ »ç¿ëÇÑ´Ù. Á¤Àû µ¥ÀÌÅÍ ¸â¹öÀÇ Á¤ÀÇ´Â ´Ù
À½°ú °°´Ù.

Ŭ·¡½ºÀÇ ¹Ù±ù¿¡ À§Ä¡ÇÏÁö¸¸ Ŭ·¡½ºÀÇ ¸â¹ö°¡ µÇ¸ç Ŭ·¡½º·ÎºÎÅÍ »ý¼ºµÇ´Â ¸ð
µç °´Ã¼°¡ °øÀ¯ÇÏ´Â ¸â¹ö.

Á¤Àû µ¥ÀÌÅÍ ¸â¹ö¸¦ ¼±¾ðÇÏ´Â ¹æ¹ýÀº ÀÏ¹Ý ¸â¹ö¸¦ ¼±¾ðÇÏ´Â °Í°ú µ¿ÀÏÇ쵂 ¾Õ
¿¡ staticÀ̶ó´Â Å°¿öµå¸¸À» Ãß°¡ÇÏ¿© ÁØ´Ù. Position Ŭ·¡½º¿¡ numpos¶ó´Â Á¤
Àû ¸â¹ö¸¦ Æ÷ÇÔ½ÃÅ°°íÀÚ ÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ µÉ °ÍÀÌ´Ù.

class Position {
private:
  .
  .
static int numpos;
  .
  .
};

ÀÌ ¼±¾ð¹®¿¡ ÀÇÇØ Á¤¼öÇü º¯¼ö numpos´Â Position Ŭ·¡½ºÀÇ ¸â¹ö°¡ µÇ¾ú´Ù.
ÇÏÁö¸¸ numpos°¡ PositionÀÇ ¸â¹ö°¡ µÇ¾ú´Ù°í Çؼ­ ¿ÏÀüÇÑ Á¤Àû µ¥ÀÌÅÍ ¸â¹ö°¡
µÈ °ÍÀº ¾Æ´Ï´Ù. Ŭ·¡½º ¼±¾ðÀ̶õ ¾îµð±îÁö³ª Ŭ·¡½ºÀÇ ÇüŸ¦ ÄÄÆÄÀÏ·¯¿¡°Ô
¾Ë¸± »ÓÀÌÁö ¸Þ¸ð¸®ÀÇ ÇÒ´çÀÌ ÀϾÁö ¾Ê±â ¶§¹®ÀÌ´Ù. Á¤Àû µ¥ÀÌÅÍ ¸â¹ö´Â Ŭ
·¡½º³»¿¡¼­ ¸â¹öÀÓÀ» ¼±¾ðÇÏ´Â °Í ¿Ü¿¡µµ Ŭ·¡½º ¹Û¿¡¼­ º°µµ·Î ¼±¾ðÇØÁÖ¾î¾ß
ÇÑ´Ù. ´ÙÀ½°ú °°ÀÌ

int Position::numpos;

Ŭ·¡½º ¹ÛÀÇ ÀÌ ¼±¾ð¿¡ ÀÇÇØ numpos´Â ½ÇÁ¦ ¸Þ¸ð¸®¸¦ ÇÒ´ç¹Þ°Ô µÇ¾ú°í ¿ÂÀüÇÑ
Á¤Àû µ¥ÀÌÅÍ ¸â¹ö°¡ µÈ´Ù. Á¤Àû ¸â¹ö´Â ÀÌ·¸°Ô Ŭ·¡½º ¾È°ú ¹Û¿¡¼­ µÎ ¹ø ¼±¾ð
ÇØÁÖ¾î¾ß ÇÑ´Ù. µÎ ¼±¾ðÀº °¢±â ´Ù¸¥ Àǹ̸¦ °¡Áö°í ÀÖ´Ù.

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


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

    

 ´ÙÀ½