생성자는 클래스를 기본 타입과 동등하게 만들어 주는 장치이다.

소멸자는 객체가 사라지기 전에 정리해야될 것들을 정리한다.

(ex : 지워주지 않으면 동적할당 데이터는 누수(reak)가 되는 경우 등 )

 

 

 차이점

생성자 

소멸자 

오버로딩 여부

O

X

사용자 호출 가능 여부

(가능 하지만 내부에서)

O

가상 함수화 가능 여부 

X

O

 

 동일한 점

생성자 

소멸자 

리턴 값이 존재? 

firend / static 키워드

붙이기 가능? 

X

디폴트 함수로 존재? 

O

 

 

생성자는 모르되, 소멸자는 반드시 public 속성이어야한다. 객체가 사라질 때 외부에서 소멸자를 호출할 수 있어야 한다. 생성자의 경우 public이 아니라면 아주 특수한 상황에서만 사용된다. (ex) singleton 패턴

 

 

 

생성자를 외부에서 여러번 호출하려고 하면, 생성자의 이름 = 클래스의 이름이기 때문에 호출이 불가능하지만, 안에서 그것을 호출해주는 함수를 정의하여 호출하는 것은 얼마든지 가능하다.

 

 

 

 

 

 

 

 

소멸자 사용시 유의점 :
객체 내부에서 할당한 것은 그 객체가 처리해야한다. 즉 한 객체가 만들어낸 것은 다른 객체에서 해제해서는 안된다. 만일 그와 같이 관리하려면 매니저 객체 따위를 만들어서 모든 삭제를 그곳에 맡기거나. 각각에게 정리시키고, 매니저가 마지막으로 남은 객체를 지우게 한다.

 

 

Posted by GENESIS8

댓글을 달아 주세요