Post List

2015년 1월 4일 일요일

자원 관리 클래스의 복사 동작에 대해 진지하게 고찰하자.

아래 4가지 방법중 하나를 고려해보는 것이 대부분일 것이다.

1. 복사를 금지합니다.
 자세한 방법은 Compiler가 만든 함수가 필요없다면, 확실히 금지시키자. 를 참조.

2. 관리하고 있는 자원에 대해 참조 카운팅을 수행합니다.
 shared_ptr을 사용.

3. 관리하고 있는 자원을 진짜로 복사합니다.
 Pointer만의 복사가 아니라 heap 상에 새로운 영역에 내용을 복사해서 그 자원까지 모두 복사하라.

4. 관리하고 있는 자원의 소유권을 옮깁니다.
 auto_ptr을 사용.

* RAII 객체의 복사는 그 객체가 관리하는 자원의 복사 문제를 안고 가기 때문에, 그 자원을 어떻게 복사하느냐에 따라 RAII 객체의 복사 동작이 결정됩니다.

* RAII 클레스에 구현하는 일반적인 복사 동작은 복사를 금지하거나 참조 카운팅을 해 주는 선으로 마무리하는 것입니다. 하지만 이 외의 방법들도 가능하니 참고해 둡시다.



댓글 없음:

댓글 쓰기