26-1-¶ó.°´Ã¼ÀÇ µ¿Àû »ý¼º

½ÇÇàÁß¿¡ °´Ã¼¸¦ µ¿ÀûÀ¸·Î »ý¼ºÇÒ ¶§´Â new ¿¬»êÀÚ¸¦ »ç¿ëÇÑ´Ù. new ¿¬»êÀÚ´Â °´Ã¼¸¦ À§ÇÑ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ ÈÄ »ý¼ºÀÚ¸¦ È£ÃâÇϹǷΠµ¿Àû ÇÒ´ç¹®¿¡ »ý¼ºÀÚ°¡ ¿ä±¸ÇÏ´Â Àμö¸¦ Àü´ÞÇØ¾ß ÇÑ´Ù. ¾ÕÀÇ Person1 ¿¹Á¦ÀÇ main ÇÔ¼ö¿¡ ´ÙÀ½ Äڵ带 Ãß°¡ÇØ º¸ÀÚ.

 

void main()

{

     Person Boy("À»Áö¹®´ö",25);

     Boy.OutPerson();

 

    Person *pGirl;

    pGirl=new Person("½Å»çÀÓ´ç",19);

    pGirl->OutPerson();

    delete pGirl;

}

 

new ¿¬»êÀÚ·Î PersonÇüÀÇ °´Ã¼¸¦ µ¿Àû »ý¼ºÇ쵂 »ý¼ºÀÚ·Î ("½Å»çÀÓ´ç", 19)ÀÇ Àμö¸¦ Àü´ÞÇß´Ù. new ¿¬»êÀÚ´Â Person Ŭ·¡½ºÀÇ Å©±â¸¸Å­ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í Person(char *,int) »ý¼ºÀÚ¸¦ È£ÃâÇÏ¿© ÀÌ °´Ã¼¸¦ ÃʱâÈ­ÇÒ °ÍÀÌ´Ù. »ý¼ºÀÚÀÇ new ¿¬»êÀÚ´Â Àμö·Î Àü´Þ¹ÞÀº ¹®ÀÚ¿­À» ÀúÀåÇÒ¸¸Å­ ¸Þ¸ð¸®¸¦ µ¿Àû ÇÒ´çÇÏ¿© Name ¸â¹ö¿¡ ´ëÀÔÇÑ´Ù. ÃʱâÈ­°¡ ¿Ï·áµÈ ÈÄ »õ·Î »ý¼ºµÈ °´Ã¼ÀÇ Æ÷ÀÎÅÍ°¡ ¸®ÅϵǴµ¥ ÀÌ Æ÷ÀÎÅ͸¦ Person *ÇüÀÇ pGirlÀ̶ó´Â º¯¼ö¿¡ ´ëÀÔÇß´Ù. ´Ù¼Ò »ý¼ÒÇØ º¸ÀÏÁö ¸ð¸£°ÚÁö¸¸ º¹ÀâÇÏ°Ô »ý°¢ÇÒ ÇÊ¿ä¾ø´Ù. ´ÙÀ½ ÄÚµå¿Í °³³äÀûÀ¸·Î ¶È°°´Ù.

 

int *pi;

pi=new int(1234);

cout << *pi;

delete pi;

 

ŸÀÔÀÌ int°¡ ¾Æ´Ñ »ç¿ëÀÚ Á¤ÀÇÇüÀ̶ó´Â °Í ¿Ü¿¡´Â ¶È°°Àº ¹®ÀåÀÌ´Ù. pGirl Æ÷ÀÎÅÍ°¡ µ¿ÀûÀ¸·Î »ý¼ºµÈ Person °´Ã¼¸¦ °¡¸®Å°°í ÀÖÀ¸¹Ç·Î ÀÌ Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ¿© °´Ã¼¸¦ ÇÁ·Î±×·¡¹ÖÇÒ ¼ö ÀÖ´Ù. pGirl->OutPerson() Àº pGirlÀÌ °¡¸®Å°´Â °´Ã¼ÀÇ Á¤º¸¸¦ È­¸éÀ¸·Î Ãâ·ÂÇÒ °ÍÀÌ´Ù. ´Ù »ç¿ëÇÑ °´Ã¼´Â delete ¿¬»êÀÚ·Î Æı«Çϴµ¥ ÀÌ ¿¬»êÀÚ´Â ¸ÕÀú Æı«ÀÚ¸¦ È£ÃâÇÑ´Ù. Æı«ÀÚ´Â »ý¼ºÀÚ°¡ ÇÒ´çÇØ ³õÀº ¸Þ¸ð¸®¸¦ ÇØÁ¦Çϸç delete ¿¬»êÀÚ´Â °´Ã¼ ±× ÀÚü¸¦ ¸Þ¸ð¸®¿¡¼­ ÇØÁ¦ÇÑ´Ù. pGirl °´Ã¼ÀÇ ÀÏ»ýÀ» ±×¸²À¸·Î ±×·Á º¸¸é ´ÙÀ½°ú °°´Ù.

°´Ã¼ ±× ÀÚüµµ Èü¿¡ »ý¼ºµÇÁö¸¸ °´Ã¼°¡ »ç¿ëÇÏ´Â ¸Þ¸ð¸®µµ Èü¿¡ »ý¼ºµÈ´Ù. µ¿Àû ÇÒ´çÀÇ ´ë»óÀÌ °´Ã¼ÀÏ ¶§´Â ¹Ýµå½Ã »ý¼ºÀÚ¸¦ È£ÃâÇÏ´Â new ¿¬»êÀÚ¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. °´Ã¼°¡ »ý¼º ¹× Æı«µÉ ¶§ ¾î¶² ÀϵéÀÌ ÀϾ´ÂÁö È®ÀÎÇØ º¸±â À§ÇØ »ý¼ºÀÚ¿Í Æı«ÀÚ¿¡ printf·Î °£´ÜÇÑ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇØ º¸ÀÚ.

 

     Person(const char *aName, int aAge) {

          Name=new char[strlen(aName)+1];

          strcpy(Name,aName);

          Age=aAge;

        printf("%s °´Ã¼ÀÇ »ý¼ºÀÚ°¡ È£ÃâµÇ¾ú½À´Ï´Ù.\n",Name);

     }

     ~Person() {

        printf("%s °´Ã¼°¡ Æı«µÇ¾ú½À´Ï´Ù.\n",Name);

          delete [] Name;

     }

 

½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

 

À»Áö¹®´ö °´Ã¼ÀÇ »ý¼ºÀÚ°¡ È£ÃâµÇ¾ú½À´Ï´Ù.

À̸§ : À»Áö¹®´ö ³ªÀÌ : 25

½Å»çÀÓ´ç °´Ã¼ÀÇ »ý¼ºÀÚ°¡ È£ÃâµÇ¾ú½À´Ï´Ù.

À̸§ : ½Å»çÀÓ´ç ³ªÀÌ : 19

½Å»çÀÓ´ç °´Ã¼°¡ Æı«µÇ¾ú½À´Ï´Ù.

À»Áö¹®´ö °´Ã¼°¡ Æı«µÇ¾ú½À´Ï´Ù.

 

Á¤ÀûÀ¸·Î »ý¼ºµÇ´Â °´Ã¼À̵ç, µ¿ÀûÀ¸·Î »ý¼ºµÇ´Â °´Ã¼ÀÌµç »ý¼ºÀÚ¿Í Æı«ÀÚ°¡ ¸ðµÎ È£ÃâµÈ´Ù´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ¾î¶² ÇÔ¼ö°¡ ¾ðÁ¦ È£ÃâµÇ´ÂÁö Á¤È®ÇÑ ½ÃÁ¡°ú ȸ¼ö¸¦ ¾Ë°í ½ÍÀ¸¸é ÀÌ·± ½ÄÀ¸·Î ¹®ÀÚ¿­À» Ãâ·ÂÇØ º¸¸é µÈ´Ù. ÀÌ Äڵ带 ¼öÁ¤ÇÏ¿© mallocÀ¸·Î °´Ã¼¸¦ »ý¼ºÇØ º¸ÀÚ.

 

Person *pGirl;

pGirl=(Person *)malloc(sizeof(Person));

pGirl->OutPerson();

free(pGirl);

 

ÀÌ·¸°Ô µÇ¸é °´Ã¼¸¦ À§ÇÑ ¸Þ¸ð¸®¸¸ ÇÒ´çµÉ »Ó °´Ã¼°¡ »ç¿ëÇÏ´Â ¸Þ¸ð¸®´Â ÇÒ´çµÇÁö ¾Ê´Â´Ù. mallocÀº ´Ü¼øÇÑ ¸Þ¸ð¸® ÇÒ´ç ÇÔ¼öÀÏ »ÓÀ̹ǷΠÁöÁ¤ÇÑ ¹ÙÀÌÆ®¼ö¸¸Å­ ¸Þ¸ð¸®¸¸ ÇÒ´çÇÏ¸ç »ý¼ºÀÚ¸¦ È£ÃâÇϰųª ÇÏÁö´Â ¾Ê´Â´Ù. pGirlÀÌ °¡¸®Å°´Â °÷¿¡´Â Person Ŭ·¡½ºÀÇ Å©±â¸¸Å­ ¸Þ¸ð¸®°¡ ÇÒ´çµÇ¾î ÀÖ±â´Â ÇÏÁö¸¸ NameÀ̳ª Age´Â ¾²·¹±â°ªÀ» °¡Áö°í ÀÖÀ» °ÍÀÌ´Ù. OutPersonÀº ÀÌ µÎ °ªÀ» È­¸éÀ¸·Î Ãâ·ÂÇϴµ¥ NameÀÌ °¡¸®Å°´Â ¸Þ¸ð¸® ¿µ¿ªÀÌ ¾îµðÀÎÁö ¾Ë ¼ö ¾øÀ¸¹Ç·Î ´Ù¿îµÉ È®·üÀÌ ¾ÆÁÖ ³ô´Ù.

mallocÀÌ »ý¼ºÀÚ¸¦ È£ÃâÇÏÁö ¾Ê´Â °Í°ú ¸¶Âù°¡Áö·Î free´Â Æı«ÀÚ¸¦ È£ÃâÇÏÁö ¾Ê´Â´Ù. °´Ã¼¸¦ µ¿Àû ÇÒ´çÇÒ ¶§´Â ¹Ýµå½Ã new/delete ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© »ý¼ºÀÚ¿Í Æı«ÀÚ¸¦ ÀûÀýÇÏ°Ô È£ÃâÇϵµ·Ï ÇØ¾ß ÇÑ´Ù. malloc/free´Â ´Ü¼ø ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ ¶§¸¸ ¾µ ¼ö Àִµ¥ Person »ý¼ºÀÚ¿¡¼­ NameÀ» À§ÇÑ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ ¶§´Â ÀÌ ÇÔ¼öµéÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. À̸§ ¹®ÀÚ¿­ ÀúÀåÀ» À§ÇÑ ¹öÆÛ¸¦ mallocÀ¸·Î ÇÒ´çÇϵµ·Ï ¼öÁ¤ÇØ º¸ÀÚ.

 

¿¹ Á¦ : Personmalloc

#include <Turboc.h>

 

class Person

{

private:

     char *Name;

     int Age;

 

public:

     Person(const char *aName, int aAge) {

        Name=(char *)malloc(strlen(aName)+1);

          strcpy(Name,aName);

          Age=aAge;

     }

     ~Person() {

        free(Name);

     }

     void OutPerson() {

          printf("À̸§ : %s ³ªÀÌ : %d\n",Name,Age);

     }

};

 

void main()

{

     Person Boy("À»Áö¹®´ö",25);

     Boy.OutPerson();

 

     Person *pGirl;

     pGirl=new Person("½Å»çÀÓ´ç",19);

     pGirl->OutPerson();

     delete pGirl;

}

 

Name ¹öÆÛ´Â ´Ü¼øÇÑ ¹®ÀÚ¿­¿¡ ºÒ°úÇϹǷΠÀÌ ¹è¿­À» ÇÒ´çÇÒ ¶§´Â ±»ÀÌ new, delete¸¦ »ç¿ëÇÏÁö ¾Ê¾Æµµ ¹«°üÇÏ¸ç º° ¹®Á¦°¡ ¾ø´Ù. ±×·¯³ª µÎ ¹æ¹ýÀ» ¼¯¾î¼­ ¾²´Ù º¸¸é ½Ç¼öÇÒ °¡´É¼ºÀÌ ÀÖÀ¸¹Ç·Î °´Ã¼¸¦ ÇÁ·Î±×·¡¹ÖÇÒ ¶§´Â °¡±ÞÀûÀ̸é new, delete·Î ÇÒ´ç ÇÔ¼ö¸¦ ÅëÀÏÇÏ´Â °ÍÀÌ ÁÁ´Ù.

¿©±â±îÁöÀÇ Äڵ常À¸·Î º¸¸é ÀÌ ¿¹Á¦´Â ¿Ïº®ÇÏ´Ù. ±×·¯³ª Person Ŭ·¡½º´Â ¾ÆÁ÷ ºÒ¿ÏÀüÇÏ¸ç ¿ÏÀüÇÑ Å¸ÀÔÀÌ µÇ±â À§Çؼ­´Â º¹»ç »ý¼ºÀÚ¿Í ´ëÀÔ ¿¬»êÀÚ±îÁö ÀçÁ¤ÀÇÇØ¾ß ÇÑ´Ù. ÀÌ·± ÁÖÁ¦¿¡ ´ëÇؼ­´Â ´ÙÀ½¿¡ ÀÚ¼¼ÇÏ°Ô ´Ù·ç°Ô µÉ °ÍÀÌ¸ç »õ·Î¿î ¹®¹ýÀ» ¹è¿ï ¶§¸¶´Ù ÀÌ ¿¹Á¦¸¦ °è¼Ó È®ÀåÇØ º¼ °ÍÀÌ´Ù. µû¶ó¼­ ÀÌÈÄÀÇ ¿ùÈ°ÇÑ ÇнÀÀ» À§ÇØ Person Ŭ·¡½º¸¦ Àß ±â¾ïÇØ µÎ¾î¾ß ÇÑ´Ù.

 

 RotateScrollOop

12Àå¿¡¼­ Ç®¾îº» RotateScroll °úÁ¦ÀÇ ½ºÅ©·ÑµÇ´Â ¹®ÀÚ¿­À» °´Ã¼·Î ÀÛ¼ºÇ϶ó. ½ºÅ©·Ñ ¹üÀ§, ¹®ÀÚ¿­, ¹æÇâ µîÀº ¸â¹ö º¯¼ö·Î Æ÷ÇÔ½ÃÅ°°í »ý¼ºÀÚ¿¡¼­ ÀÌ °ªµéÀ» ÃʱâÈ­ÇÏ¸ç ½ºÅ©·Ñ µ¿ÀÛÀº ¸â¹ö ÇÔ¼ö°¡ ó¸®ÇÑ´Ù. ±âÁ¸ÀÇ Äڵ带 Ŭ·¡½º·Î ĸ½¶È­ÇÏ°í ¿©±â¿¡ °¢°¢ ´Ù¸¥ ¼Óµµ·Î ½ºÅ©·ÑÇÒ ¼ö ÀÖ´Â ¼Ó¼ºÀ» Ãß°¡ÇØ º¸ÀÚ. ´ÙÀ½Àº ¿Ï¼ºµÈ Ŭ·¡½ºÀÇ Å×½ºÆ® ÄÚµåÀÌ´Ù.

 

void main()

{

     RotateScroll R1("Scroll Object",30,50,12,2,true);

     RotateScroll R2("Object Oriented Programming",10,60,8,3,false);

     RotateScroll R3("The C++ Programming Language",5,70,18,8,false);

     RotateScroll R4("-------->",40,75,3,0,true);

     RotateScroll R5("<=======::==",20,75,4,0,false);

 

     for (clrscr();!kbhit();) {

          R1.Rotate();

          R2.Rotate();

          R3.Rotate();

          R4.Rotate();

          R5.Rotate();

          delay(20);

     }

}

 

main¿¡¼­´Â °´Ã¼¸¦ »ý¼ºÇÑ ÈÄ ÁÖ±âÀûÀ¸·Î Rotate ¸â¹ö ÇÔ¼ö¸¸ È£ÃâÇÏ¸é ¸ðµç 󸮴 °´Ã¼°¡ ¾Ë¾Æ¼­ ó¸®ÇØ¾ß ÇÑ´Ù. ÀÌ Äڵ尡 ¹«³­È÷ µ¿ÀÛÇÒ ¼ö ÀÖ´Â RotateScroll Ŭ·¡½º¸¦ ÀÛ¼ºÇØ º¸¾Æ¶ó.