Language/C++
생성자 내에서 동적할당을 한다면??
Triany
2015. 3. 9. 14:43
생성자 내에서 동적할당을 한다면
반드시 제공해 주어야 할것!! 1)소멸자 2)복사생성자
class Person
{
char *name;
int age;
public:
Person(char* _name, int _age)
{
name = new char[strlen(_name)+1];
strcpy(name, _name);
age = _age;
}
1) 소멸자 제공
-> 메모리 누수(유출) 막음
~Person()
{
delete []name;
}
2) 복자생성자 정의
->잘못된 메모리 참조 막음 ( 얕은 복사(주소값 복사)가 아닌 깊은 복사(공간할당하여 값 복사)를 하기 위함 )
Person(const Person& p)
{
name = new char[strlen(p.name)+1];
strcpy(name, p.name);
age = p.age;
}