왜냐하면?
RAII 방식은 객체의 scope(존재 할 수 있는 범위)를 이용하여, 자원을 관리하는데, 객체를 복사 했을때, 소멸자를 어떻게 정의하느냐에 따라서, 전기적 쇼크를 프로그래머에게 줄지, 램에게 줄지 결정지을수 있기 때문이다.

.. 전기적 쇼크는 항상 램에게만 줘야 한다.

일반적인 사례
1. 복사를 금지한다
- 유니크한 객체를 관리할 때 사용 한다.

2. 관리하고 있는 자원에 대해 참조 카운팅을 수행한다.
- 해당 자원을 가르키는 포인터만을 복사 할때, 카운팅 한다. 까다롭지만 가장 효율적인 방법이다.

3. 관리하고 있는 자원을 진짜로 복사한다.
- 보통 문자열 객체에 대해 관리할때 사용 한다. 클래스 인터페이스를 무시할 경우가 많이 생기기 때문이다. []연산자 때문에..

4. 관리하고 있는 자원의 소유권을 옮긴다.
- 관리되는 자원이 유니크 해야만 할때 사용한다. 대표적으로 std::auto_ptr 이 있다.

이것만은 잊지 말자!
1. RAII 방식의 객체의 복사에 대해서 반드시 고려하자.
2. 보통은 일반적인 사례 1번과 (2,3 조합형)을 많이 사용 한다.


여담
MEC++ 을 보면 참조카운팅, smart_ptr에 대한 주의깊은 설명을 한다.
중요한건 벙어리 포인터 처럼 동작하게 하되, 스마트 포인터의 기능이 있고, 혼동되지 않게 만들어야 한다고 하는데, ... 역시 설계만이 살길이다.

관련링크
http://redinlife.egloos.com/1611410
http://ikpil.tistory.com/293
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기