29-4-´Ù.Áßø Ŭ·¡½º

Áßø Ŭ·¡½º¶õ Ŭ·¡½º ¼±¾ð¹®¾È¿¡ ´Ù¸¥ Ŭ·¡½º°¡ ¼±¾ðµÇ´Â ÇüÅÂÀÌ´Ù. ƯÁ¤ Ŭ·¡½º¸¦ ±¸ÇöÇϱâ À§ÇÑ º¸Á¶ Ŭ·¡½º°¡ ÇÊ¿äÇѵ¥ º¸Á¶ Ŭ·¡½º´Â ¿ÀÁ÷ ÀÌ Å¬·¡½º ³»ºÎ¿¡¼­¸¸ »ç¿ëÇÏ¸ç ¿ÜºÎ¿¡´Â ÀüÇô ¾Ë¸± ÇÊ¿ä°¡ ¾ø´Ù¸é À̶§ Ŭ·¡½º¸¦ Áßø½ÃŲ´Ù. Ŭ·¡½º¿¡ ĸ½¶È­µÇ´Â °ÍÀº ÈçÈ÷ ¸â¹ö º¯¼ö, ¸â¹ö ÇÔ¼ö Á¤µµÀÌÁö¸¸ ŸÀÔµµ Æ÷Ç﵃ ¼ö ÀÖ´Ù. Ŭ·¡½º°¡ ŸÀÔÀ̹ǷΠ´Ù¸¥ Ŭ·¡½º¿¡ Æ÷Ç﵃ ¼ö ÀÖ´Â °ÍÀº ´ç¿¬ÇÏ¸ç ¿­°ÅÇüÀ̳ª typedef·Î Á¤ÀÇÇÑ Å¸ÀÔµµ ¹°·Ð °¡´ÉÇÏ´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.

 

¿¹ Á¦ : NestClass

#include <Turboc.h>

 

class Outer

{

private:

     class Inner

     {

     private:

          int memA;

     public:

          Inner(int a) : memA(a) { }

          int GetA() { return memA; }

     } obj;

public:

     Outer(int a) : obj(a) { }

     void OutOuter() { printf("¸â¹ö°ª = %d\n",obj.GetA()); }

};

 

void main()

{

     Outer O(345);

//  Inner I(678);       // ¿¡·¯

 

     O.OutOuter();

}

 

Outer Ŭ·¡½º ¼±¾ð¹®¾È¿¡ Inner Ŭ·¡½º ¼±¾ð¹®ÀÌ ÀÖ°í Inner Ŭ·¡½ºÇüÀÇ °´Ã¼ obj¸¦ ¸â¹ö·Î Æ÷ÇÔÇÏ°í ÀÖ´Ù. Inner Ŭ·¡½º´Â Outer Ŭ·¡½º ³»ºÎ¿¡¼­¸¸ »ç¿ëÇϹǷΠ¿ÜºÎ·Î´Â ÀüÇô ¾Ë·ÁÁöÁö ¾Ê´Â´Ù. ±×·¡¼­ main¿¡¼­´Â Inner ŸÀÔÀÇ °´Ã¼¸¦ ¼±¾ðÇÒ ¼ö ¾ø´Ù. Áï Inner´Â Outer Ŭ·¡½º¿¡ ´ëÇØ Áö¿ªÀûÀΠŬ·¡½º¶ó°í ÇÒ ¼ö ÀÖ´Ù. ¸¸¾à Inner¸¦ ¿ÜºÎ¿¡µµ ¾Ë¸®°í ½Í´Ù¸é public: ¿µ¿ª¿¡¼­ ¼±¾ðÇÏ¸é µÈ´Ù. ÀÌ °æ¿ì ¿ÜºÎ¿¡¼­´Â Outer::Inner I(1234); ½ÄÀ¸·Î ÀÌ Å¸ÀÔÀÌ ¼Ò¼ÓµÇ¾î Àִ Ŭ·¡½º¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.

Ŭ·¡½º°¡ ÇÏ´Â ÀÏÀÌ ±²ÀåÈ÷ º¹ÀâÇؼ­ µµ¿ì¹Ì Ŭ·¡½º¸¦ ¸¸µé¾î¾ß ÇÒ ÇÊ¿ä°¡ Àִٰųª ³»ºÎÀûÀ¸·Î¸¸ »ç¿ëÇؾßÇϴ ŸÀÔÀÌ ÀÖ´Ù¸é ÀÌ·± ½ÄÀ¸·Î Ŭ·¡½º ¼±¾ðÀ» Áßø½ÃŲ´Ù. ´ÙÀ½ Ŭ·¡½º´Â ÀÌÁß ¿¬°á ¸®½ºÆ®¸¦ Ç¥ÇöÇϴµ¥ ¿¬°á ¸®½ºÆ®´Â ÀúÀåµÇ´Â µ¥ÀÌÅÍ¿Í ¾ç¹æÇâÀÇ ¸µÅ©·Î ±¸¼ºµÈ ³ëµåÀÇ ÁýÇÕÀÌ´Ù. ³ëµåµéÀº Ŭ·¡½º ³»ºÎ¿¡¼­ ¿Ïº®ÇÏ°Ô °ü¸®ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ¿ÜºÎ¿¡¼­ ±»ÀÌ ¾Ë ÇÊ¿ä°¡ ¾øÀ¸¹Ç·Î LinkedList Ŭ·¡½º ¾È¿¡ ¼±¾ðÇß´Ù.

 

class LinkedList

{

private:

     struct Node {

          int data;

          Node *prev,*next;

     };

     Node *head,*tail;

 

public:

     LinkedList();

     ~LinkedList();

     Insert(Node *p,int a);

     Delete(Node *p);

     int GetData(Node *p);

};

 

¿ÜºÎ¿¡¼­´Â Insert, Delete µîÀÇ °ø°³µÈ ÀÎÅÍÆäÀ̽º ÇÔ¼ö·Î Á¤¼ö°ªÀ» ³Ö°Å³ª »©±â¸¸ ÇÒ »ÓÀÌ°í ¸ðµç ³»ºÎÀûÀÎ ÀÚ·á °ü¸®´Â Ŭ·¡½º¿¡ ¿Ïº®ÇÏ°Ô Ä¸½¶È­µÇ¾î ÀÖ´Ù. ¹°·Ð ¿ÜºÎ¿¡¼­µµ Node¸¦ ²À ¾Ë¾Æ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù¸é ÀÌ Å¬·¡½º¸¦ ÆÛºí¸¯ ¿µ¿ª¿¡ ¼±¾ðÇÒ ¼öµµ ÀÖ´Ù. Node´Â LinkedList¿¡¼­¸¸ ÇÊ¿äÇÏ¸ç ¿ÜºÎ¿¡ µû·Î Á¤ÀÇÇØ ºÁ¾ß ¾Æ¹«Â¦¿¡µµ ¾µ¸ð°¡ ¾øÀ¸¹Ç·Î Áö¿ª ŸÀÔÀÌ µÇ´Â °ÍÀÌ ¿Ç´Ù. LinkedList°¡ Node¸¦ ¿ÏÀüÈ÷ Æ÷ÇÔÇÏ°í ÀÖÀ¸¸é ÀÌ Å¬·¡½º´Â ÀÚüÀûÀ¸·Î µ¿ÀÛÇÒ ¼ö ÀÖ´Â ¸ðµç °ÍÀ» °¡Áö¹Ç·Î Àç»ç¿ë¼º°ú ¹ü¿ë¼ºÀÌ Áõ°¡ÇÑ´Ù.

Ŭ·¡½º ¼±¾ð ÀÚü°¡ Áö¿ªÀûÀ̶ó´Â °Í°ú Ŭ·¡½º°¡ ¸â¹ö ÇÔ¼ö¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù´Â Á¡À» È°¿ëÇϸé C/C++ ¾ð¾î°¡ Áö¿øÇÏÁö ¾Ê´Â Áö¿ª ÇÔ¼ö¸¦ ¸¸µå´Â °Íµµ °¡´ÉÇÏ´Ù. ¿ø·¡ CÀÇ ÇÔ¼ö´Â »óÈ£ ÆòµîÇÑ °ü°è¿¡ ÀÖ¾î ÇÔ¼ö³¢¸® Á¾¼ÓµÇÁö ¾Ê´Â´Ù. ±×·¯³ª Ŭ·¡½º°¡ °³ÀԵǸé ÇÔ¼ö³¢¸® Á¾¼Ó½Ãų ¼öµµ ÀÖ°í ÆĽºÄ®Ã³·³ Áö¿ª ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. C++ÀÌ ¾ð¾î Â÷¿ø¿¡¼­ Áö¿ª ÇÔ¼ö¸¦ Áö¿øÇÏ´Â °ÍÀº ¾Æ´ÏÁö¸¸ Áö¿ª ŸÀÔÀ» Çã¿ëÇϸç Ŭ·¡½º¶ó´Â ŸÀÔÀÌ ÇÔ¼ö¸¦ °¡Áú ¼ö ÀÖÀ¸¹Ç·Î Áö¿ª ÇÔ¼ö°¡ °¡´ÉÇØÁø °ÍÀÌ´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.

 

¿¹ Á¦ : LocalFunc

#include <Turboc.h>

 

void func()

{

     struct dummy {

          static void localfunc() {

              puts("Àú´Â func ¾È¿¡¼­¸¸ Á¤Àǵ˴ϴÙ.");

          }

     };

 

     dummy::localfunc();

}

 

void main()

{

     func();

     // localfunc();        // ¿¡·¯

}

 

func ÇÔ¼ö ³»ºÎ¿¡¼­ dummy¶ó´Â À̸§À¸·Î Áö¿ª Ŭ·¡½º¸¦ ¼±¾ðÇÏ°í ÀÌ Å¬·¡½ºÀÇ Á¤Àû ÇÔ¼ö localfunc¸¦ ÀζóÀÎÀ¸·Î Á¤ÀÇÇÏ°í ÀÖ´Ù. dummy¸¦ struct·Î ¼±¾ðÇߴµ¥ class·Î ¼±¾ðÇÏ°í public:À» ºÙÀÌ´Â °Í°ú °°´Ù. Á¤ÀûÀ¸·Î ¼±¾ðÇßÀ¸¹Ç·Î È£ÃâÇÒ ¶§´Â ¹Ýµå½Ã Ŭ·¡½º À̸§°ú ÇÔ²² »ç¿ëÇØ¾ß ÇÑ´Ù. Áö¿ª Ŭ·¡½ºÀÇ ÇÔ¼ö´Â staticÀ̾î¾ß Çϴµ¥ ±×·¡¾ß °´Ã¼¾øÀÌ Å¬·¡½º¸íÀ¸·Î ¹Ù·Î È£Ãâ °¡´ÉÇÏ´Ù. ¸¸¾à Á¤ÀûÀÌ ¾Æ´Ï¶ó¸é ÀÌ ÇÔ¼ö¸¦ È£ÃâÇϱâ À§ÇØ dummyÇü °´Ã¼¸¦ Çϳª ¼±¾ðÇØ¾ß ÇϹǷΠºÒÆíÇØÁø´Ù.

localfunc´Â func ÇÔ¼ö ³»ºÎ¿¡¼­ Á¤ÀÇÇÑ Áö¿ª Ŭ·¡½º ¼Ò¼ÓÀÇ Á¤Àû ¸â¹ö ÇÔ¼öÀ̹ǷΠÀÌ ÇÔ¼ö´Â func ¿ÜºÎ·Î´Â ¾Ë·ÁÁöÁö ¾Ê´Â´Ù. µû¶ó¼­ main ÇÔ¼ö¿¡¼­´Â ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ¾ø´Ù. »ç½Ç main¿¡°Ô´Â localfunc »Ó¸¸ ¾Æ´Ï¶ó dummy¶ó´Â Áö¿ª Ŭ·¡½º ÀÚü°¡ ¾Ë·ÁÁöÁö ¾Ê´Â´Ù.

ÀÌ ¿¹Á¦´Â C/C++·Îµµ Áö¿ª ÇÔ¼ö¸¦ ¸¸µé ¼ö ÀÖ´Ù´Â °ÍÀ» º¸¿©ÁÙ »Ó ½Ç¿ëÀû °¡Ä¡´Â º°·Î ¾ø´Ù. °Ô´Ù°¡ ÀÌ·¸°Ô ¸¸µç ÇÔ¼ö´Â ÀζóÀθ¸ °¡´ÉÇÏ´Ù´Â Á¡¿¡¼­ º¹ÀâÇÑ µ¿ÀÛÀ» ó¸®Çϱ⿡´Â ÇÑ°è°¡ ÀÖ´Ù. ¾ÆÁÖ ±ä ÇÔ¼ö°¡ ¾²´Â ÀÛÀº À¯Æ¿¸®Æ¼ ÇÔ¼ö ÁýÇÕÀ» ÀÌ·± ½ÄÀ¸·Î Á¤ÀÇÇØ ³õÀ¸¸é ¹èÆ÷Çϱâ Æí¸®ÇÏ´Ù´Â Á¤µµÀÇ È°¿ë ¹æ¾ÈÀÌ ÀÖÁö¸¸ ¹®¹ýÀ» º¯Ä¢ÀûÀ¸·Î ¾²¸é ÀÌ·± °Íµµ °¡´ÉÇÏ´Ù´Â Èï¹Ì°Å¸® Á¤µµ¹Û¿¡ ¾ÈµÇ´Â °Í °°´Ù.