코드 예시

  • Destructor (소멸자) 는 object 가 삭제될 때 호출되는 함수이다.
  • 보통 object 가 삭제되기 전에 해줘야 하는 작업 (가령 open 한 파일을 닫는 등) 을 수행할 때 사용한다.
#include <iostream>
#include <string>
 
class Example {
private:
	std::string name_;
public:
	Example(std::string name);
	~Example();
};
 
Example::Example(std::string name) : name_(name) {}
 
Example::~Example() {
	std::cout << "Destructor callled (" << this->name_ << ")" << std::endl;
}
 
int main() {
	{
		Example ex1("ex1");
	}
	Example* ex2 = new Example("ex2");
	delete ex2;
}
Destructor callled (ex1)
Destructor callled (ex2)
  • 기본적으로 object 는 그놈이 속한 level 에서 수명 주기를 갖는다.
    • 이때문에 ex1{} 를 벗어나자 삭제되는 것.
  • 혹은 new 키워드를 이용해 동적할당한 경우에도 delete 로 할당 해제했을 때 destructor 가 호출되는 것을 볼 수 있다.