소멸자(destructor)는 생성자와는 반대로 인스턴스가 소멸될 때 반드시 호출되는 멤버 함수이다. 소멸자는 객체가 삭제되는 시점에서 필요한 마무리 작업을 처리하기 위해서 있는 것이다. 예를 들어서 동적으로 할당받은 메모리를 반환하거나 열어 놓은 파일을 닫거나 시리얼 등의 통신 연결을 끊거나 하는 마무리 작업을 수행해야 하는 경우 소멸자를 구현해야 한다.


 소멸자의 이름은 클래스이름 앞에 틸다(~)를 붙인다. 예를 들어서 Rect 클래스의 소멸자 이름은 ~Rect() 이다.


class Rect { // 클래스 선언
   public:
       Rect(); // 생성자
       ~Rect(); // 소멸자
   .....
};

Rect::~Rect() { // 소멸자 구현
   .....
}

 생성자와 마찬가지로 소멸자도 반환값이 없으며 함수 내부에서 어떤 값을 반환해서도 안된다. 또한 생성자를 오버로딩할 수 있으나 (즉,  입력 인자가 다른 생성자가 여러 개 있을 수 있다) 소멸자는 입력 인수가 없는 기본형 하나밖에 없다.


 생성자와 마찬가지로 사용자가 소멸자를 선언하지 않은 경우에는 컴파일러가 자동으로 기본 소멸자(default destructor)를 생성하여 인스턴스 소멸시에 자동으로 호출되도록 한다. 이 기본 소멸자는 아무 일도 하지 않고 단순히 리턴하도록 만들어진다.


C++ 강좌 전체 목록 >>>


c{c++},n{c0021}

Posted by 살레시오

댓글을 달아 주세요