[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]
#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 |