Herb Sutter의 More Exceptional C++의 item3을 보면...

predicate가 복사되어도 상태를 일관되게 관리하기 위해서

자체적으로 제작한 스마트 포인터(CountedPtr)을 이용한 예를 볼 수 있다.

아무리 봐도 이상한 점은 아래 코드에서 빨간색으로 표시한 대입연산자에서

왜 Decrement를 호출해줘야 하는가 이다... auto_ptr 처럼 소유권이 이전되는게

아닌데... 아무리 봐도 이해가 되질 않는다...-OTL

( Herb Sutter 아저씨는 그냥 평범하게 boost::shared_ptr을 쓸 것이지... --; )

개인적으로 나중에 다시 보거나 누군가가 댓글을 달아주겠거니 하는 희망을 갖고

포스팅한다...

[CODE type="c"]
template <typename T>
class CountedPtr
{
private :
  class Impl
  {
  public :
      Impl ( T* pp ) : p ( pp ), refs ( 1 ) { }
      ~Impl ( ) { delete p; }

      T*        p;
      size_t    refs;
  };
  Impl*    impl_;
public :
  explicit CountedPtr ( T* p ) : impl_ ( new Impl ( p ) ) { }
  ~CountedPtr ( ) { Decrement ( ); }

  CountedPtr ( const CountedPtr& other ) : impl_ ( other.impl_ )
  {
      Increment ( );
  }

  CountedPtr& operator = ( const CountedPtr& other )
  {
      if ( impl_ != other.impl_ )
      {
          Decrement ( );     // 얘의 의미가 몰까???
          impl_ = other.impl_;
          Increment ( );
      }

      return *this;
  }

  T* operator -> ( ) const
  {
      return impl_->p;
  }

  T& operator * ( ) const
  {
      return *( impl_->p );
  }

private :
  void Decrement ( )
  {
      if ( --(impl_->refs) == 0 )
          delete impl_;
  }

  void Increment ( )
  {
      ++(impl_->refs);
  }
};
[/HTML][/CODE]

예가 잘못된 것인가??? 내가 잘못 생각한 것인가...
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by nemonandes


Exceptional C++ 지하철 도서 부류에 넣고 들고

다닌지 거의 두 달. 책이 잘 읽혀지지도 않고...--;

번역이 무언가 약간 평이하지 않아서

원서와 대조해서 보고... 의미를 파악하는 등...

게다가 시종일관 진지한 책이었다...-OTL

그리하야... 결국 시간이 많이 걸렸다...

일단 시리즈 물이니까..

다음 버전 More Exceptional C++ 들고 다니는데..


예전에 앞부분 좀 본 바로는 IT 서적 전문 번역가가 아닌 분이 번역을 하셔서인지..

코드가 잘 맞지 않음을 느꼈다.. 음... 이 책은 번역서만 보유하고 있는데...

출판 이후 A/S 서비스는 잘 안되고 있는 듯하고.. 결국 어둠의 경로를 통해서

찾아봐야 할 듯.. 우선 표지에 씌여 있는.."이 정도는 알아야 진정한 C++ 프로그래머"

라는 멘트...^^;; 일단 책을 펴 볼 수 밖에 없게 만든다.

책은 얇아서 들고다니기 좋은데 모든 시리즈를 번역한 출판사가 달라서 책 크기나...

디자인이 약간 신경쓰이게? 다르다.

시리즈 물인데 3권 모두 다른 분에 의해 번역되었고...

Exceptional C++은 Scott Meyers가 머릿말을 썼는데 MXC++은 Andrew Koenig가

머릿말을 썼다. 책에 대한 흥미를 유발시키는 머릿말...:)

그나저나.. 다른 요인으로 지치게 만드는 책이 아니어야 할텐데... 살짝 걱정...

이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by nemonandes

Exceptional C++는 comp.lang.c++.moderated 뉴스

그룹에 올라온 글 중 Guru of the Week에 선정된

연재물로 Herb Sutter에 의해 편집된 책이다.

원저의 서문을 작성한

Scott Meyers의 Effective 시리즈와 비슷한 형식을

갖추고 있어서 우선 지하철 도서로 보기 좋다.

내용을 살펴보면 책 제목처럼 Exception한 상황에

대처하기 위한 견고한 프로그래밍 방법에 대한

내용으로 채워져 있다. 견고한 디자인, 예외 안전성에 대한 권고사항, 컴파일러 방화벽,

Name lookup과 인터페이스 설계 원칙에 대한 내용은 어떤 어지간한? 책들에서

소개될 수 조차 없었던 고급 팁들이다.

47개의 문제 제기, 그리고 해결 방안은 모두 프로그래밍의 견고함을 유지하기

위한 방안으로 해결책을 모을 수 있다.

뉴스그룹을 통해 논의되었던 방안들에 대한 고찰과 최선의 방안을 소개하는 형식으로

진행되는 항목 진행으로 독자들은 생각을 정리할 수 있고 최선의 해결책을 짧은 시간동안

경험할 수 있게 하는 좋은 가이드라인을 제공한다.

가장 생각나는 문구?는 트랩, 함정, 안티 이디엄 부분에서 말하는...

"아는 것을 코드로 만들어야 하고, 코드로 만든 것은 모두 알아야만

제대로 된 프로그래밍을 할 수 있다..." 는 문구다...

책에서도 소개된 Scott Meyers의 "int를 사용하는 것처럼 사용하라"

라는 말로도 많이 비유된 내용인데...(약간 다른가?? ^^;; )

기발함 보다는 평이함 속에 안정성이 있다는 모... 그런 얘기다...


단지 아쉬운 점은 한국어 판은 좀처럼 소개되지 않은 평이하지 않은 용어 선택이나

매끄럽지 않은 문장으로 인해 가독성이 약간 떨어지는 느낌이 들었다.

원저의 명성을 생각할 때 한국어판이 계속해서 출간될 것으로 생각되는데

독자의 피드백을 수렴하여 최고의 한국어판으로 거듭나길 기대해 본다.
 
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by nemonandes


link to tattertools link to Daum link to Tistory link to AllBlog link to DNSever
BLOG main image
May the force be with you................. by nemonandes
mail to nemonandes

카테고리

분류 전체보기 (220)
C落書Log (132)
S關心事Log (72)
C自動車Log (4)
C寫眞Log (12)
Statistics Graph
Total : 461,466
Today : 13 Yesterday : 39