1. 명시적 변환, 암시적 변환
스마트 포인터는 멤버 함수 get()을 통해 실제 포인터를 제공할 수 있다. 그리고, 포인터 역참조 연산자(operator->, operator*)도 오버로딩하고 있다.
암시적 변환보다는 get 등의 명시적 변환 함수를 제공하는 쪽이 일반적으로 낫다. 하지만 고객 편의성을 위해 암시적 변환을 제공하는 곳도 있다.
이것만은 잊지 말자!
- 실제 자원을 직접 접근해야 하는 기존 API들도 많기 때문에, RAII 클래스를 만들 때는 그 클래스가 관리하는 자원을 얻을 수 있는 방법을 열어 주어야 합니다.
- 자원 접근은 명시적 변환 혹은 암시적 변환을 통해 가능합니다. 안전성만 따지면 명시적 변환이 대체적으로 더 낫지만, 고객 편의성을 놓고 보면 암시적 변환이 괜찮습니다.
'C++ > Effective C++' 카테고리의 다른 글
[Effective C++] 17. new로 생성한 객체를 스마트 포인터에 저장하는 코드는 별도의 한 문장으로 만들자 (0) | 2020.08.03 |
---|---|
[Effective C++] 16. new 및 delete를 사용할 때는 형태를 반드시 맞추자 (0) | 2020.08.03 |
[Effective C++] 14. 자원 관리 클래스의 복사 동작에 대해 진지하게 고찰하자 (0) | 2020.08.03 |
[Effective C++] 13. 자원 관리에는 객체가 그만! (0) | 2020.08.03 |
[Effective C++] 12. 객체의 모든 부분을 빠짐없이 복사하자 (0) | 2020.07.28 |