본문 바로가기
프로그래밍/언어_스크립트

[Study Effective C++] 자원 관리는 객체로~

by 써드아이 2008. 2. 13.

* 무슨 말인고 하니 자원을 클래스로 만들어 관리하면 (생성자에서 자원을 할당하고 소멸자에서 해제)
객체가 생성될 때 자원 할당 (생성자), 객체가 사라질 때 자동으로 해제 (소멸자) 된다.
생성된 객체가 스코프룰을 벗어날 때도 자동으로 (당연하지 않은가?) 자원이 해제된다.

예제로... 기존에 해봤던 AutoCriticalSection 이 있겠다.

그런데 C++ 표준 함수에서 std::auto_ptr<> 템플릿과 std::tr1::shared_ptr<> 템플릿을
제공하여 위 사항을 고려하지 않은 클래스에 대해서도 자동화 할 수 있다. 나이스~


잘 이해가 안가는 내용 두가지.

* 위의 스마트 포인터 템플릿을 사용하지 않을 경우 주의할점은..
자원의 복사시에 어떻게 처리할까 하는 문제인데 처리 방법만 얘기한다면

복사 금지, 레퍼런스 카운팅(share_ptr 템플릿), 깊은 복사(deep copy),  소유권 이전

의 방법중에서 선택해야 한다.

* 클래스가 관리하는 자원의 접근 방법 제공 - 명시적 변환, 암시적 변환


위 두개의 내용은 이해가 안된다. 아무래도  C++ 문법책을 조금 더 봐야할 듯.. -_-;;


[출처]
Effective C++ - Scott Meyers / 곽재용