책 정리/More Exceptional C++
항목 14 : 최적화 미루기 Part 2 : 미루기에 대한 소개 ( 난이도 : 3 )
최익필
2008. 12. 18. 12:07
항목 13에서 보여주었던 String 클래스에는 큰 문제(..)는 없으나, 문자열 특성상 복사만 하고 삭제 되는 경우가 있기 때문에, 불필요한 복사가 이루어 진다고 볼 수 있다.
여기서 생각해 볼 만한 사항은, 어떻게 하면, 문자열의 내부가 변경 되어 질 경우에만, 실제 복사가 이루어 지게 하고, 아닐 경우에는 문자열만 공유 되게 할 수 있는가? 이다.
다음 코드를 보자!
자. 어떻게 하면 위의 "생각해 볼 만한 사항"을 만족하게 StringBuf 와 String 을 구현 할 수 있을까?
해설
이번 최적화 복사 알고리즘은,
- 내부값이 변경 되는가?
- 변경 된다면 깊은 복사
- 변경 되지 않는다면 참조 복사
총평
음~