생성자와 소멸자(파괴자)는 클래스의 시작과 끝에 각각 실행된다.
생성자의 경우 주로 클래스를 쓰기 위해서 필요한 인자를 받기위해서 사용하고,
소멸자의 경우 주로 할당된 동적 메모리의 해제를 위해서 사용된다.
생성자/소멸자를 선언해주지않으면 자동으로 디폴트 생성자/소멸자가 생성된다.
생성자 중에서 독특한 녀석은 복사 생서자 이다.
복사 생성자란 자기 자신과 같은 꼴의 녀석을 자신의 생성 인수로 받아서 그 녀석과 같게 생성되는 것이다.
class cat{};
cat a;
cat b(a); // 이러면 cat a와 같은 녀석의 b가 만들어 지는것이다!
그런데 복사생성자는 기본적으로 shallow copy를 한다.
만약 cat 클래스 안에 포인터 변수가 있다면 shallow copy를 하게 되면 안될 것이다.
shallow copy를 하면 a의 포인터 변수 값이 변하면 b의 것도 변하기 때문!!(문자열포인터의 경우에는 친절히 에러가 뜸)
이렇게 shallow copy가 일어나면 안될 경우에는 우리가 직접 복사생성자를 써줘야 할 것이다!
'Window Course > C++' 카테고리의 다른 글
reference(참조자) (0) | 2010.11.02 |
---|---|
This 포인터 (0) | 2010.11.02 |
인라인함수 (0) | 2010.11.02 |
Overloading (오버로딩) (0) | 2010.11.02 |
디폴트매개변수 (0) | 2010.11.02 |