시작은 미미하나 끝은 쥬쥬하리라.

TR1 2

[effective C++] Chapter 03 : 14. 자원 관리 클래스의 복사 동작에 대해 진지하게 고찰하자

14. 자원 관리 클래스의 복사 동작에 대해 진지하게 고찰하자 RAII 클래스 RAII 객체 복사 이것만은 잊지 말자 ! RAII 클래스 힙에 생기지 않는 자원은 auto_ptr과 tr1::shared_ptr 등의 스마트 포인터로는 처리해주는 것이 힘들다. 따라서 우리는 자원 관리 클래스를 만들 필요가 있다. 뮤텍스 타입의 객체를 조작하는 C API의 lock과 unlock을 사용하면서 뮤텍스의 잠금을 관리하는 클래스를 하나 만들었다고 가정해보자. 이 클래스는 RAII(자원 획득 즉 초기화) 기법을 따라 구성하면서 생성 시에 자원을 획득하고 소멸 시에 그 자원을 해제한다고 가정하고 코드는 아래와 같다. 사용자는 lock을 사용할 때 RAII 기법에 맞추어 사용한다. RAII 객체의 복사 만약 여기서 lo..

Study/Effective C++ 2023.08.12

[effective C++] Chapter 03 : 13. 자원 관리에는 객체가 그만 !

13. 자원 관리에는 객체가 그만 ! 객체의 소멸 관리 auto_ptr TR1-RCSP 이것만은 잊지 말자 객체의 소멸 관리 투자를 모델링해 주는 클래스를 가지고 작업을 한다고 가정하자. Investment라는 최상위 클래스가 있고 그 밑에 구체적인 형태의 투자 클래스가 있다고 생각하고 Investment에서 파생된 클래스의 객체를 얻어내기 위한 용도로 CreateInvestment()라는 이름의 팩토리 함수가 정의된다고 하면 아래와 같은 코드가 될 것이다. 위 CreateInvestment 함수를 통해 얻어낸 객체의 삭제는 호출해준 쪽에서 해주어야 한다. 따라서 팩토리 함수의 호출과 메모리 해제를 하는 함수 f를 아래와 같이 구현해 보았다. 하지만 위의 함수는 중간에 return을 만나거나 contin..

Study/Effective C++ 2023.08.04