[모던C++입문] 2.4 소멸자

짜장범벅·2022년 6월 5일
0

모던CPP입문

목록 보기
5/11

2.4 소멸자

소멸자는 객체를 파괴할 때 마다 호출되는 함수다. 소멸자는 생성자와 달리 하나의 오버로드만 있고 인수를 허용하지 않는다.`

2.4.1 구현 규칙

  1. 소멸자에서 예외를 절대 던지지 말기!
  2. 클래스에 virtual 함수가 포함되어 있으면 소멸자도 virtual이어야 한다.

2.4.2 리소스 제대로 처리하기

2.4.2.1 리소스 획득은 초기화

리소스 획득은 초기화(RAII)는 리소스를 객체에 묶고 객체 생성 및 파괴 매커니짐을 사용해 프로그램에서 리소스를 자동으로 처리한다. 객체가 범위를 벗아날 때 마다 리소스를 자동으로 해제한다.

2.4.2.2 예외

예외가 발생하면 모든 리소스를 해제하는 일이 더 어려워진다. 우리는 문제를 발견할 때 마다 예외를 던지기 전에 지금까지 획득했던 모든 리로스를 해제해야 한다.

2.4.2.3 관리되는 리소스

앞선 문제들은 리소스를 관리하는 클래스를 도입함으로 해결할 수 있다.

2.4.2.4 자기 자신을 관리하기

리소스 관리자를 구현할 때, 한 클래스에 하나 이상의 리소스를 관리해서는 안된다.

따라서 심시어 같은 타입인 두 리소스를 처리하는 클래스를 작성할 때 마다 리소스 중 하나를 관리하는 클래스를 도입해야 한다. 더 나아가 두 리소스의 관리자를 작성하고 리소스의 내용과 처리 로직을 완전히 분리해야 한다.

profile
큰일날 사람

0개의 댓글