½ÇÇàÁß¿¡ °´Ã¼¸¦ µ¿ÀûÀ¸·Î »ý¼ºÇÒ ¶§´Â 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 Ŭ·¡½º¸¦ ÀÛ¼ºÇØ º¸¾Æ¶ó.