[ Effective C++ ] 정리 모음집
" C++ 프로그래머의 필독서, 스콧 마이어스의 Effective C++ 를 읽고 내용 요약 / 정리 "
" RAII 객체를 직접 구현할 때에는 사용 목적에 맞게 구성하는 것이 중요! "
- RAII 객체의 복사는 그 객체가 관리하는 자원의 복사 문제를 안고 가기 때문에, 그 자원을 어떻게 복사하느냐에 따라 RAII 객체의 복사 동작이 결정!
- RAII 클래스에 구현하는 일반적인 복사 동작은 복사를 금지하거나 참조 카운팅을 해 주는 방법을 사용 함
RAII 객체가 복사되도록 두는 것 자체가 말이 안되는 겅우가 많음
복사 함수(복사 생성자, 복사 대입 연산자)를 private 멤버로 만들자!
shared_ptr이 사용 중인 방식
shared_ptr을 멤버로 넣어 관리하자!
📢 shared_ptr은 소멸자가 delete를 자동으로 부른다며? 난 삭제까지 바라지 않아!
- shared_ptr은 삭제자를 지정할 수 있음.
- delete 대신 원하는 동작의 함수를 사용하면 된다!
class Lock { public: explicit Lock(Mutex* pm) : mutexPtr(pm, UnLock) // delete 대신 사용할 원하는 동작의 { // UnLock 함수 사용 Lock(MutexPtr.get()); } private: shared_ptr<Mutex> mutexPtr; };
자원을 다 썼을 때 각각의 사본을 확실히 해제하자!
깊은 복사를 수행