생성자 내에서 동적할당을 한다면
반드시 제공해 주어야 할것!! 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;
}
'Language > C++' 카테고리의 다른 글
const 함수 및 const 객체 특징, static 멤버의 특징 (0) | 2015.03.09 |
---|---|
const 클래스 멤버변수 초기화하기 (0) | 2015.03.09 |
[c++] 항상 헷갈리는 const 위치에 따른 쓰임새 차이 (const char , char const) (0) | 2015.02.17 |
c++ literal class (c++11) (0) | 2015.02.13 |
C컴파일러와 달리 C++컴파일러에서 함수 오버로딩이 가능한 이유? (0) | 2014.11.24 |