일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 티스토리챌린지
- operator new
- effective stl
- 다형성
- 오블완
- Effective c++
- 참조자
- resource management class
- lua
- 비교 함수 객체
- virtual function
- 영화
- reference
- Vector
- implicit conversion
- 게임
- 암시적 변환
- 스마트 포인터
- 상속
- UE4
- 루아
- 언리얼
- 영화 리뷰
- 예외
- 메타테이블
- Smart Pointer
- 반복자
- c++
- exception
- more effective c++
Archives
- Today
- Total
스토리텔링 개발자
[Effective C++] 15. 자원 관리 클래스 get 함수 제공하기 본문
728x90
항목 15. 자원 관리 클래스에서 관리되는 자원은 외부에서 접근할 수 있도록 하자.
- 제대로 만들어진 스마트 포인터 클래스는 거의 모두 포인터 역참조 연산자도 오버로딩하고 있어서 사용 시의 편의를 제공한다.
- T* operator->() const
- T& operator*() const
- 그럼에도 RAII 클래스의 객체를 실제 자원으로 변환해야 할 때가 있다.
- 기존에 쓰이던 API에서 자원을 직접 참조하게 만들어져 있는 경우가 잦기 때문
변환 방법
- 명시적 변환
- 멤버 함수 제공.
-
class Font { public: ... FontHandle get() const { return f; } // 명시적 변환 함수 ... }
- 사용자가 하부 수준 API를 쓰고 싶을 때마다 get을 호출해야 하는 번거로움이 있다.
- 암시적 변환
- 변환 연산자를 구현.
-
class Font { public: ... operator FontHandle() const { return f; } // 암시적 변환 함수 ... };
- 자원관리 클래스를 쓰려 한 부분에서 원하지 않는 타입 변환이 일어날 염려가 있다.
- 대부분의 경우 문제가 발생했을 때 한 눈에 알아볼 수 있는 명시적 변환이 나을 때가 많다.
728x90
'개발 > Effective C++' 카테고리의 다른 글
[Effective C++] 17. 스마트 포인터 생성 시 예외 문제 (0) | 2024.06.10 |
---|---|
[Effective C++] 16. new, delete 짝 맞춤 문제 (0) | 2024.06.07 |
[Effective C++] 14. 자원 관리 클래스 복사 동작 (0) | 2024.06.04 |
[Effective C++] 13. 자원 관리 객체(RAII) (0) | 2024.06.03 |
[Effective C++] 12. 복사 함수 구현 (0) | 2024.05.31 |
Comments