[ ] ¿¬»êÀÚ´Â ¹è¿¿¡¼ ÷ÀÚ ¹øÈ£·ÎºÎÅÍ ¿ä¼Ò¸¦ ã´Â´Ù. ¹Ýµå½Ã ¸â¹ö ÇÔ¼ö·Î¸¸ Á¤ÀÇÇÒ ¼ö ÀÖÀ¸¸ç Àü¿ª ÇÔ¼ö·Î´Â Á¤ÀÇÇÒ ¼ö ¾ø´Ù. ¿©·¯ °¡Áö ÀÚ·áÀÇ ÁýÇÕÀ» ´Ù·ç´Â Ŭ·¡½º¿¡¼ ÀÌ ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇÏ¿© ¿øÇϴ´ë·Î ±â´ÉÀ» ºÎ¿©ÇÒ ¼ö ÀÖ´Ù. ¾ÕÀå¿¡¼ ¸¸µé¾ú´ø µ¿Àû ¹è¿ Ŭ·¡½ºÀÎ DArray Ŭ·¡½º¿¡ [ ] ¿¬»êÀÚ ÇÔ¼ö¸¦ Ãß°¡ÇØ º¸ÀÚ. DArray ¿¹Á¦¿¡ ´ÙÀ½ ¸â¹ö ¿¬»êÀÚ ÇÔ¼ö¸¸ Ãß°¡ÇÏ¸é µÈ´Ù.
class DArray
{
....
ELETYPE &operator [](int idx) {
return ar[idx];
}
};
¹è¿ ÷ÀÚ¸¦ Àμö·Î Àü´ÞÇϸé Àμö°¡ ÁöÁ¤ÇÏ´Â ¼ø¼ÀÇ ¹è¿ ¿ä¼Ò¿¡ ´ëÇÑ ·¹ÆÛ·±½º¸¦ ¸®ÅÏÇϵµ·Ï Çß´Ù. ÀÌ ¿¬»êÀÚ°¡ Á¤ÀÇµÇ¸é ¹è¿ ¿ä¼Ò¸¦ °£ÆíÇÏ°Ô ÀÐ°í ¾µ ¼ö ÀÖ´Ù.
printf("%d\n",ar[3]);;
ar[3]=100;
ar[3]À¸·Î ³× ¹ø° ¿ä¼Ò¸¦ ÀÐÀ» ¼ö ÀÖÀ» »Ó¸¸ ¾Æ´Ï¶ó ·¹ÆÛ·±½º¸¦ ¸®ÅÏÇϹǷΠar[3]À» ´ëÀÔ½ÄÀÇ Áº¯¿¡ ³õ´Â °Íµµ °¡´ÉÇÏ´Ù. ÀÌ ¿¬»êÀÚ¿¡ ÀÇÇØ Ã·ÀڷκÎÅÍ ¹è¿ ¿ä¼Ò¸¦ ÀÐ°í ¾µ ¼ö ÀÖÀ¸¹Ç·Î GetAt, SetAt ¸â¹ö ÇÔ¼ö´Â ÀÌÁ¦ »èÁ¦Çصµ »ó°ü¾ø´Ù. À̸§À» °¡Áö´Â ¸â¹ö ÇÔ¼öº¸´Ù [ ] ¿¬»êÀÚ°¡ ÈξÀ ´õ Á÷°üÀûÀÌ´Ù. [ ] ¿¬»êÀÚ°¡ ´Ù¸¥ ¿¬»êÀÚµé°ú ´Ù¸¥ ƯÀÌÇÑ Á¡À̶ó¸é ´ëÀÔ½ÄÀÇ Áº¯°ú ¿ìº¯¿¡ ¸ðµÎ ¾µ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. ±×·¡¼ »ó¼ö °´Ã¼¿¡ ´ëÇؼµµ ¾µ ¼ö ÀÖ´Â const ¹öÀüÀÇ [ ] ¿¬»êÀÚµµ Áߺ¹ Á¤ÀÇÇØ¾ß ÇÑ´Ù. »ó¼ö [ ] ¿¬»êÀÚ¸¦ ¸¸µéÁö ¾Ê¾ÒÀ» ¶§ ¾î¶»°Ô µÇ´ÂÁö Å×½ºÆ®ÇØ º¸ÀÚ.
const DArray car;
car[0]=3; // ¿¡·¯
printf("%d\0",car[0]); // À̰͵µ ¿¡·¯
car´Â »ó¼ö °´Ã¼·Î ¼±¾ðµÇ¾úÀ¸¹Ç·Î °ªÀ» º¯°æÇÒ ¼ö ¾ø´Ù. ±×·¯¹Ç·Î car[0]¿¡ ¾î¶² °ªÀ» ´ëÀÔÇÏ´Â ¹®ÀåÀº ´ç¿¬È÷ ¿¡·¯À̸ç ÄÄÆÄÀϵÇÁö ¾Ê´Â´Ù. ±×·¯³ª ¸¶Áö¸· ¹®ÀåÀº car[0]¸¦ Àб⸸ Çߴµ¥µµ ºÒ±¸ÇÏ°í ¿ª½Ã ¿¡·¯·Î 󸮵Ǵµ¥ ÀÌ´Â ÇÕ¸®ÀûÀÌÁö ¸øÇÏ´Ù. [ ] ¿¬»êÀÚ°¡ Áº¯¿¡ ¾²ÀÏ ¶§´Â °ªÀ» º¯°æÇÏÁö ¸øÇϹǷΠ´ç¿¬È÷ ¿¡·¯ÀÌÁö¸¸ ¿ìº¯¿¡ ¾²ÀÏ ¶§´Â Àб⸸ ÇϹǷΠÇã¿ëµÇ¾î¾ß ÇÑ´Ù. ±×·¯³ª ÄÄÆÄÀÏ·¯´Â ÇÔ¼öÀÇ ¼±¾ð¹®¿¡ const ÁöÁ¤ÀÌ ¾øÀ¸¸é °´Ã¼ÀÇ ³»¿ëÀ» ¹Ù²Ü ¼öµµ ÀÖ´Ù°í »ý°¢Çϱ⠶§¹®¿¡ »ç¿ëµÇ´Â À§Ä¡¿¡ »ó°ü¾øÀÌ »ó¼ö °´Ã¼¿¡ ´ëÇؼ´Â ÀÌ ¿¬»êÀÚ¸¦ »ç¿ë ±ÝÁö½ÃŲ´Ù. ¸¸¾à »ó¼ö °´Ã¼¿¡ ´ëÇØ Àб⸸ ÇÏ´Â [ ] ¿¬»êÀÚ¸¦ µû·Î Á¤ÀÇÇÏ°í ½Í´Ù¸é ´ÙÀ½ ¿¬»êÀÚ ÇÔ¼ö¸¦ Çϳª ´õ ¿À¹ö·ÎµùÇØ¾ß ÇÑ´Ù.
const ELETYPE &operator [](int idx) const {
return ar[idx];
}
»ó¼ö ÇÔ¼ö¿Í ºñ»ó¼ö ÇÔ¼ö¸¦ °¢°¢ Á¦°øÇϸé ÄÄÆÄÀÏ·¯´Â °´Ã¼ÀÇ »ó¼ö¼ºÀ» º¸°í Àû´çÇÑ ÇÔ¼ö¸¦ È£ÃâÇÒ °ÍÀÌ´Ù. ±×·±µ¥ À§ ¿¹ÀÇ car °´Ã¼´Â ¾Æ¹« ¦¿¡µµ ¾µ¸ð¾ø´Â °´Ã¼Ã³·³ º¸ÀδÙ. µ¿Àû ¹è¿À̶õ °ªÀ» ÀúÀåÇÏ´Â °ÍÀÌ º»¿¬ÀÇ ÀÓ¹«Àε¥ ÀÌ °´Ã¼¸¦ »ó¼ö·Î ¼±¾ðÇÏ¸é ¿ä¼Ò¸¦ Ãß°¡Çϰųª »èÁ¦ÇÒ ¼ö ¾øÀ¸¸ç ¿À·ÎÁö ÀÐÀ» ¼ö¸¸ ÀÖ´Ù. Ãß°¡°¡ ¾ÈµÇ´Âµ¥ Àд ±â´ÉÀÌ °¡´ÉÇÑ °ÍÀº ¾Æ¹« Àǹ̰¡ ¾øÁö ¾ÊÀº°¡? °ú¿¬ ±×·¸±â´Â ÇÏ´Ù. ±×·¯³ª ±×·¡µµ »ó¼ö °´Ã¼´Â ¿©ÀüÈ÷ ÇÊ¿äÇѵ¥ ÇÔ¼öÀÇ Àμö·Î Àü´Þ¹ÞÀ» ¶§ Çü½Ä Àμö°¡ »ó¼ö¼ºÀ» °¡Á®¾ß ÇÒ ÇÊ¿ä°¡ Àֱ⠶§¹®ÀÌ´Ù.
func(const DArray *pAr) { ... }
ÀÌ·± ÇÔ¼ö ³»ºÎ¿¡¼ pArÀÌ °¡¸®Å°´Â ´ë»óü¸¦ »ó¼ö Ãë±ÞÇÏ°í ½ÍÀ» ¶§ »ó¼ö °´Ã¼°¡ »ç¿ëµÇ¸ç ÀÌ °´Ã¼ÀÇ °ªÀ» Àбâ À§ÇØ »ó¼ö¼ºÀ» °¡Áö´Â [ ] ¿¬»êÀÚµµ ÇÊ¿äÇÑ °ÍÀÌ´Ù.
¸¸¾à [ ] ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇÏ´Â °´Ã¼ÀÇ ¹è¿À» ¸¸µç´Ù¸é ÀÌ ¹è¿¿¡¼ °´Ã¼¸¦ ¼±ÅÃÇÏ´Â [ ] ¿¬»êÀÚ¿Í ¿À¹ö·ÎµùµÈ [ ] ¿¬»êÀÚ´Â ¾î¶»°Ô ±¸ºÐÇÒ ¼ö ÀÖÀ»±î? ¿¹¸¦ µé¾î µ¿Àû ¹è¿ °´Ã¼ÀÇ ¹è¿À» Å©±â 3À¸·Î ¼±¾ðÇÏ´Â ´ÙÀ½ Äڵ带 º¸ÀÚ.
DArray ar[3];
ar[2][1]=5;
ÀÌ °æ¿ì ar[2][1]ÀÇ ¾ÕÂÊ [2]¿Í µÚÂÊÀÇ [1]Àº °¢°¢ ¾î¶² Àǹ̸¦ °¡Áú±î? ¾ð¶æ º¸±â¿¡´Â ÄÄÆÄÀÏ·¯°¡ ¹«Ã´ Çò°¥·ÁÇÒ °Í °°Áö¸¸ Â÷±ÙÈ÷ »ý°¢ÇØ º¸¸é ´ë»ó ŸÀÔÀ¸·ÎºÎÅÍ Á¤È®ÇÑ ¿¬»êÀÚÀÇ Àǹ̸¦ ¾î·ÆÁö ¾Ê°Ô ±¸ºÐÇÒ ¼ö ÀÖ´Ù. ¾ÕÂÊÀÇ [2]´Â Àüü ¹è¿ ar¿¡ ´ëÇØ ¾²¿©Á³À¸¹Ç·Î ÀÌ ¿¬»êÀÚ´Â º»·¡ÀÇ ¹è¿ ÷ÀÚ ¿¬»êÀÚÀ̸ç ar¹è¿¿¡¼ 2¹ø° ¿ä¼Ò¸¦ ¼±ÅÃÇÑ´Ù. µÚÂÊÀÇ [1]Àº ar[2]¿¡ ´ëÇØ ¾²¿©Á³À¸¸ç ar[2]´Â DArray ŸÀÔÀÇ °´Ã¼À̹ǷΠÀÌ ¿¬»êÀÚ´Â ¿À¹ö·ÎµùµÈ ¿¬»êÀÚÀÌ´Ù.
[ ] ¿¬»êÀÚ´Â ¿ø·¡ ¹è¿ ¿ä¼ÒÁß Çϳª¸¦ ±¸ÇÏ´Â µ¿ÀÛÀ» ÇÏÁö¸¸ ¿À¹ö·ÎµùµÇ¸é ¿ÏÀüÈ÷ ´Ù¸¥ Àǹ̸¦ ºÎ¿©ÇÒ ¼öµµ ÀÖÀ¸¸ç ¹è¿°ú »ó°ü¾ø´Â Ŭ·¡½º¿¡µµ Àû¿ëÇÒ ¼ö ÀÖ´Ù. ¾î·µç ÀԷ°ªÀ¸·ÎºÎÅÍ °´Ã¼ÀÇ Á¤º¸ Áß Çϳª¸¦ ¸®ÅÏÇÏ´Â ÇüÅÂÀÇ µ¿ÀÛÀº ¸ðµÎ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î Time°´Ã¼ÀÇ °¢ ¿ä¼Ò¸¦ ±¸ÇÏ´Â ¿ëµµ·Îµµ ¾µ ¼ö Àִµ¥ ´ÙÀ½ÀÌ ±× ¿¹ÀÌ´Ù.
¿¹ Á¦ : TimeIndex |
#include <Turboc.h>
class Time
{
private:
int hour,min,sec;
public:
Time() { }
Time(int h, int m, int s) { hour=h; min=m; sec=s; }
void OutTime() {
printf("%d:%d:%d\n",hour,min,sec);
}
int &operator [](int what) {
switch (what) {
case 0:
return hour;
case 1:
return min;
default:
case 2:
return sec;
}
}
const int &operator [](int what) const {
switch (what) {
case 0:
return hour;
case 1:
return min;
default:
case 2:
return sec;
}
}
};
void main()
{
Time A(1,1,1);
const Time B(7,7,7);
A[0]=12;
printf("ÇöÀç %d½ÃÀÔ´Ï´Ù.\n",A[0]);
//B[0]=8;
printf("ÇöÀç %d½ÃÀÔ´Ï´Ù.\n",B[0]);
}
Time °´Ã¼¸¦ ±¸¼ºÇÏ´Â hour, min, sec ¸â¹ö´Â ¹è¿ÀÌ ¾Æ´ÏÁö¸¸ [ ] ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇÏ¿© [0]ÀÌ¸é ½Ã, [1]ÀÌ¸é ºÐ, [2]¸é Ãʸ¦ ¸®ÅÏÇϵµ·Ï Çß´Ù. ¿ÜºÎ¿¡¼´Â ¸¶Ä¡ ÀÌ °´Ã¼¸¦ ±¸¼ºÇÏ´Â ½ÃºÐÃÊ ¸â¹ö°¡ ¹è¿¿¡ ¼ÓÇÑ ¿ä¼ÒÀÎ °Íó·³ »ç¿ëÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù.
¶È°°Àº [ ] ¿¬»êÀÚ°¡ µÎ ¹ú Á¤ÀǵǾî Àִµ¥ Çϳª´Â ºñ»ó¼ö ¹öÀüÀÌ°í Çϳª´Â »ó¼ö ¹öÀüÀÌ´Ù. [ ] ¿¬»êÀÚ°¡ ·¹ÆÛ·±½º¸¦ ¸®ÅÏÇϹǷΠÀÌ ¿¬»êÀÚ·Î °´Ã¼ÀÇ °ªÀ» ÀÐÀ» ¼ö ÀÖÀ» »Ó¸¸ ¾Æ´Ï¶ó A[0]=12 ó·³ ÷ÀÚ ¿¬»êÀÚ·Î °´Ã¼ ³»¿ëÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. ±×·¡¼ ÀÌ ¿¬»êÀÚ´Â const°¡ ¾Æ´Ï¾î¾ß Çϴµ¥ ÀÌ·¸°Ô µÉ °æ¿ì »ó¼ö °´Ã¼¿¡ ´ëÇؼ´Â [ ] ¿¬»êÀÚ¸¦ »ç¿ëÇÒ ¼ö ¾ø´Ù´Â Á¦¾àÀÌ »ý±ä´Ù. ¼³»ç »ó¼ö °´Ã¼¿¡ ´ëÇØ [ ] ¿¬»êÀÚ·Î Àб⸸ ÇÑ´Ù ÇÏ´õ¶óµµ ÄÄÆÄÀÏ·¯´Â [ ] ¿¬»êÀÚ ÇÔ¼ö°¡ const ¼Ó¼ºÀ» °¡Áö°í ÀÖÁö ¾ÊÀ¸¹Ç·Î È£ÃâÀ» Çã°¡ÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ±×·¡¼ [ ] ¿¬»êÀÚ´Â Ç×»ó »ó¼ö ¹öÀü, ºñ»ó¼ö ¹öÀü µÎ ¹úÀÌ ÇÊ¿äÇÏ´Ù.
C/C++ ¾ð¾îÀÇ [ ] ¿¬»êÀÚ´Â Æ÷ÀÎÅÍ ¿¬»êÀ» Çϵµ·Ï Á¤ÀǵǾî ÀÖÀ¸¹Ç·Î ÇÇ¿¬»êÀÚ Áß Çϳª´Â ¹Ýµå½Ã Æ÷ÀÎÅÍÀÌ°í ³ª¸ÓÁö Çϳª´Â ¹Ýµå½Ã Á¤¼ö¿©¾ß ÇÑ´Ù. ±×·¯³ª ¿À¹ö·ÎµùµÇ¸é ¾îµð±îÁö³ª ÇÔ¼ö¿¡ ºÒ°úÇϹǷΠÀÓÀÇÀÇ Å¸ÀÔÀ» Àμö·Î Àü´Þ¹ÞÀ» ¼ö ÀÖ´Ù. ¿¹¸¦ ÇлýµéÀÇ ¸ñ·ÏÀ» °¡Áö´Â StuList Ŭ·¡½º°¡ ÀÖÀ» ¶§ [ ] ¿¬»êÀÚÀÇ Àμö·Î ÇлýÀÇ À̸§(const char *)À» ÁÖ¸é Çйø(int)À» ¸®ÅÏÇÏ´Â int StuList::operator[](const char *) ÇÔ¼ö¸¦ Á¤ÀÇÇÒ ¼öµµ ÀÖ´Ù.
¿¹ Á¦ : StuList |
#include <Turboc.h>
class StuList
{
private:
struct Student {
char Name[10];
int StNum;
} S[30];
public:
StuList() {
strcpy(S[0].Name,"À̽¸¸");S[0].StNum=1;
strcpy(S[1].Name,"¹ÚÁ¤Èñ");S[1].StNum=3;
strcpy(S[2].Name,"ÀüµÎȯ");S[2].StNum=6;
strcpy(S[3].Name,"³ëÅ¿ì");S[3].StNum=9;
strcpy(S[4].Name,"±è¿µ»ï");S[4].StNum=15;
strcpy(S[5].Name,"±è´ëÁß");S[5].StNum=17;
strcpy(S[6].Name,"³ë¹«Çö");S[6].StNum=20;
strcpy(S[7].Name,"??????");S[7].StNum=100;
}
int operator[](const char *Name) {
for (int i=0;;i++) {
if (strcmp(S[i].Name,Name)==0) return S[i].StNum;
if (S[i].Name[0]=='?') return -1;
}
}
};
void main()
{
StuList SL;
printf("±è¿µ»ï ÇлýÀÇ ÇйøÀº %d¹øÀÔ´Ï´Ù.\n",SL["±è¿µ»ï"]);
}
ÆíÀÇ»ó »ý¼ºÀÚ¿¡¼ Çлý ¸ñ·ÏÀ» ÀÛ¼ºÇߴµ¥ ½ÇÁ¦ ¿¹¿¡¼´Â µ¥ÀÌÅͺ£À̽º¿¡¼ Çлý ¸ñ·ÏÀ» ´ë·®À¸·Î ÀоîµéÀÏ °ÍÀÌ´Ù. ÀÌ Å¬·¡½º°¡ °¡Áø Á¤º¸ Áß ¹®ÀÚ¿À» Àμö·Î ÁÖ°í ¿øÇÏ´Â Á¤¼ö¸¦ ã´Â ¿ëµµ·Î [ ] ¿¬»êÀÚ¸¦ È°¿ëÇß´Ù. [ ] ¿¬»êÀÚ¸¦ ÀÏÁ¾ÀÇ °Ë»ö ¿¬»êÀÚ·Î Àǹ̸¦ º¯°æÇÏ¿© È°¿ëÇÏ´Â °ÍÀÌ´Ù.