외부에서 접근하면 캡슐화가 무너지지 않나?
RAII 방식의 객체의 경우 자원의 관리에 그 중점을 두었기 때문에, 그리고 설계상에 멤버 변수로써의 값으로 많이 쓰이기 때문에, 다 무너진다고 볼순 없다는게 저자의 견해이다. 개인적으로 참조자의 객체형은 외부 접근이 있는게 더 유용하다고 판단된다.


왜 더 유용한가?
자원이라는것이 엄밀히 말하면 메모리가 많은데, 윈도우 API에선 .. HDC, HPEN, ..... 등등 미칠듯이 많다. 이것들을 쓸때마다 외부접근이 안되버리면 .. 더 유용하지 않게 된다!


외부접근을 어떻게 해야 하는가?
크게 명시적 호출방법과 암시적 호출 방법이 존재한다. 명시적 호출 방법은 말 그대로 특정 멤버 함수를 이용하여, 자원의 참조자를 얻어 오는 방법이고, 암시적 호출 방법은 operator T() 방식으로 사용한다.


어떤게 더 좋은가?
개인적으론 명시적 호출 방법을 .. 많이 쓴다. 암시적 변환은 .. 상황에 맞게 알아서 변환된다는 장점이 오히려 단점이 되기 때문에 많은 상황에서는 오히려 치명적인 트로이 목마가 되고 만다. 그러므로 명시적 호출방법을 쓰는게 좋다. String 클래스를 보더라도, ... 명시적 호출을 이용하자.


이것만은 잊지말자
1.실제 자원은 참조자 형태로 접근하기 때문에, 그 클래스의 멤버 변수에 접근을 열어 두자
2. 되도록 명시적 변환을 지향하자.

관령링크
http://redinlife.egloos.com/1613442
http://kelly.springnote.com/pages/565258
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요