[Effective C++] 3. 자원 관리 [2/2]
자원 관리 클래스에서 원시 자원에 접근하는 방법과, new·delete 형태를 맞추고 스마트 포인터 생성을 별도 문장으로 분리해야 하는 이유를 정리했습니다.
자원 관리 클래스에서 원시 자원에 접근하는 방법과, new·delete 형태를 맞추고 스마트 포인터 생성을 별도 문장으로 분리해야 하는 이유를 정리했습니다.
메모리·파일·뮤텍스 같은 자원을 객체로 감싸 관리하는 RAII 기법과, 자원 관리 클래스의 복사 동작을 설계하는 방법을 정리했습니다.
operator=에서 자가대입을 안전하게 처리하는 방법과, 객체를 복사할 때 상속받은 부분까지 빠짐없이 복사해야 하는 이유를 정리했습니다.
생성자와 소멸자 안에서 가상 함수를 호출하면 안 되는 이유와, 대입 연산자가 *this의 참조자를 반환해야 하는 이유를 정리했습니다.
다형성을 가진 기본 클래스에 가상 소멸자가 필요한 이유와, 소멸자에서 예외가 빠져나가지 않도록 처리하는 방법을 정리했습니다.
컴파일러가 몰래 만들어내는 생성자·소멸자·대입 연산자의 동작과, 이들이 필요 없을 때 생성을 막는 방법을 정리했습니다.
const로 의미적 제약을 거는 방법과 객체를 쓰기 전에 반드시 초기화해야 하는 이유를 정리했습니다. C++23의 명시적 객체 매개변수도 함께 다룹니다.
C++를 여러 하위 언어의 연합체로 바라보는 관점과, #define 대신 const·enum·inline을 써야 하는 이유를 정리했습니다.
퀵·힙·삽입 정렬을 상황에 따라 전환하는 인트로 정렬의 동작 원리와, std::sort가 이를 채택한 이유를 정리했습니다.
동적 계획법을 쓸 수 있는 중복 부분 문제와 최적 부분 구조 조건, 그리고 분할 정복·그리디와의 차이를 정리했습니다.