생성자는 클래스를 기본 타입과 동등하게 만들어 주는 장치이다.
소멸자는 객체가 사라지기 전에 정리해야될 것들을 정리한다.
(ex : 지워주지 않으면 동적할당 데이터는 누수(reak)가 되는 경우 등 )
차이점 |
생성자 |
소멸자 |
오버로딩 여부 |
O |
X |
사용자 호출 가능 여부 |
(가능 하지만 내부에서) |
O |
가상 함수화 가능 여부 |
X |
O |
동일한 점 |
생성자 |
소멸자 |
리턴 값이 존재? |
X |
X |
firend / static 키워드 붙이기 가능? |
X |
X |
디폴트 함수로 존재? |
O |
O |
생성자는 모르되, 소멸자는 반드시 public 속성이어야한다. 객체가 사라질 때 외부에서 소멸자를 호출할 수 있어야 한다. 생성자의 경우 public이 아니라면 아주 특수한 상황에서만 사용된다. (ex) singleton 패턴
생성자를 외부에서 여러번 호출하려고 하면, 생성자의 이름 = 클래스의 이름이기 때문에 호출이 불가능하지만, 안에서 그것을 호출해주는 함수를 정의하여 호출하는 것은 얼마든지 가능하다.
소멸자 사용시 유의점 :
객체 내부에서 할당한 것은 그 객체가 처리해야한다. 즉 한 객체가 만들어낸 것은 다른 객체에서 해제해서는 안된다. 만일 그와 같이 관리하려면 매니저 객체 따위를 만들어서 모든 삭제를 그곳에 맡기거나. 각각에게 정리시키고, 매니저가 마지막으로 남은 객체를 지우게 한다.
'프로그래밍 > 프로그래밍 공부' 카테고리의 다른 글
클래스 다이어그램(Class Diagram) (0) | 2016.01.21 |
---|---|
메모리 구조 (1) | 2016.01.19 |
생성자(constructor)와 소멸자(destructor) 호출. (0) | 2015.03.25 |
빈 기본 클래스 최적화 EBCO(Empty Base Class Optimization) (0) | 2015.03.25 |
오버로딩(Overloading) (0) | 2015.03.24 |
pragma 지시자 (0) | 2015.03.19 |
댓글을 달아 주세요