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;

}


Posted by Triany