본문 바로가기

Native/C++

파괴자(Destructor)

[code]#include <iostream.h>
#include <conio.h>
#include <string.h>

class Person
{
public:
    char *Name;
    int Age;

    Person(char *aName, int aAge)
    {
        Name = new char[strlen(aName)+1];
        strcpy(Name,aName);
        Age = aAge;
    }

    //
    // Destructor
    //
    ~Person()
    {
        delete [] Name;
    }

    void OutPerson()
    {
        cout << "이름 : " << Name << endl;
        cout << "나이 : " << Age << endl;
    }
};

void main()
{
    Person Guy("을지문덕",25);
    Guy.OutPerson();
}

// 생성자에서 별도의 버퍼를 직접 할당했으므로 Name이 가리키는 버퍼는 객체 내부에 있지 않고 외부의 힙에 따로 존재한다. 객체는 Name 멤버를 통해 이름이 저장되어 있는 메모리 주소를 가리키고 있을 뿐이다.
// ~Person 파괴자는 Name 멤버가 차지하고 있는 메모리를 해제한다. Name이 new []로 할당되었으므로 해제할 때는 delete []를 쓴다.

[/code]

'Native > C++' 카테고리의 다른 글

객체의 동적 생성  (0) 2013.10.02
생성자와 파괴자의 특징  (0) 2013.10.02
생성자 오버로딩(ConstructOverload)  (0) 2013.10.02
생성자(Constructor)  (0) 2013.10.02
Date And People  (0) 2013.10.02