항목 14에서 실제로 쓸 때, 실제 객체를 만드므로써, 복사 자체를 지연 시킴을 보았을 것이다. 이번 항목에선 operator[] 를 이용해서 사용 되어 질 경우에 생각해야 할 "거리"를 준다. 다음 코드를 보자. namespace Optimized { class StringBuf { private: // 복사 방지 StringBuf( const StringBuf& ); StringBuf& operator=( const StringBuf& ); public: StringBuf(); ~StringBuf(); void Reserve( size_t n ); public: char *buf_;// 버퍼 size_t len_;// 버퍼의 길이 size_t used_;// 실제로 사용된 char의 수 unsigne..
최적화 미루기 검색 결과
해당 글 2건
항목 15 : 최적화 미루기 Part 3 : 반복자와 참조 ( 난이도 : 6 )
책 정리/More Exceptional C++
2008. 12. 18. 14:37
항목 14 : 최적화 미루기 Part 2 : 미루기에 대한 소개 ( 난이도 : 3 )
항목 13에서 보여주었던 String 클래스에는 큰 문제(..)는 없으나, 문자열 특성상 복사만 하고 삭제 되는 경우가 있기 때문에, 불필요한 복사가 이루어 진다고 볼 수 있다. 여기서 생각해 볼 만한 사항은, 어떻게 하면, 문자열의 내부가 변경 되어 질 경우에만, 실제 복사가 이루어 지게 하고, 아닐 경우에는 문자열만 공유 되게 할 수 있는가? 이다. 다음 코드를 보자! namespace Optimized { class StringBuf { public: StringBuf();// 빈 채로 시작 ~StringBuf();// 버퍼 지우기 void Reserve( size_t n );// len >= n인지 확인 char *buf_;// 버퍼 size_t len_;// 버퍼의 길이 size_t used_;..
책 정리/More Exceptional C++
2008. 12. 18. 12:07
최근댓글