{

항목 27에서 표준적인 형식이 어떤 형식인지 말했으니 패스하고, 표준적인 형식의 ++와 --의 구현론( 한줄로 설명 된다)과 접두 형식을 왜 사용해야 하는지 알아 보자.

우선 알아야 할 것은 "++", "--"의 표준적인 형식이 무엇인가? 인데,

전위 연산자로 후위 연산자를 구현하는것이 표준적인 형식이다. 이 항목에 대해서는 C++ Standard Template Library 에서 이야기한 내용을 쓰기보단, 구글에서~ "전위 연산자" 라고 검색을 하면 자세히 나오니 넘어가자

그렇다면 왜 접두형식을 사용 해야 하는가?

왜냐하면 후위 연산자는 전위연산자를 사용해서 구현했는데, 전위 연산자의 경우, 자기 자신을 변화시키고 자신을 리턴하는 반면, 후위 연산자는 먼저 자신을 복사한 값을 만들고, 전위 연산자로 자신을 변화 시킨후에 복사한 값을 리턴한다. 이 과정에서 2번 이상의 복사 생성자가 호출 된다. 여기서 불필요한 성능을 지불하니, "접두형식을 사용하라"고 허브셔터가 말하는 것이다.

이것을 볼 수 있는 대표적인 코드는 무엇이 있는가?

STL 의 iterator 를 보면 자세히 나와 있다. ++terator, --iterator, iterator++, iterator--, 를 한번 비교해 보는게 좋다. 이것들을 비교하므로써 표준적인 형식이 무엇이고, 어떻게 구현하는게 효과적이며, 나중에 이런 연산자를 구현해야 할 때, 어떻게 구현해야 하는지 알 수 있다.


자~ 이것으로 28 항목도 정리 끝

}

'책 정리 > C++ Coding Standards : C++ 코딩의 정석' 카테고리의 다른 글

항목 33 : 최소화된 클래스를 사용 하라. ( Prefer minimal classes to monolithic classes. )  (0) 2009.02.27
항목 32 : 만들고 있는 클래스가 무엇인지 확실히 하라. ( Be clear what kind of class you’re writing. )  (0) 2009.02.26
항목 31 : 함수의 인자의 처리 순서에 좌우되는 코드는 좋지 않다. ( Don’t write code that depends on the order of evaluation of function arguments. )  (0) 2009.02.26
항목 30 : &&, || 그리고 콤마의 오버로딩은 피하라. ( Avoid overloading &&, ||, or , (comma) )  (0) 2009.02.26
항목 29 : 간접적인 타입 변환을 피하기 위해 오버로딩을 활용하라. ( Consider overloading to avoid implicit type conversions. )  (0) 2009.02.25
항목 28 : ++와 --의 표준적인 형식과 접두 형식을 사용하라. ( Prefer the canonical form of ++ and --. Prefer calling the prefix forms. )  (0) 2009.02.25
항목 27 : 표준적인 형식의 산술 및 할당 연산자를 사용하라. ( Prefer the canonical forms of arithmetic and assignment operators. )  (0) 2009.02.25
항목 26 : 오버로딩된 연산자의 본래 의미를 유지하라. ( Preserve natural semantics for overloaded operators. )  (0) 2009.02.24
항목 25 : 값, (스마트) 포인터, 참조 중 적절한 방식으로 인자를 얻어라.(Take parameters appropriately by value, (smart) pointer, or reference. )  (0) 2009.02.24
항목 24 : 내부 #include 가드를 사용하라. 외부 #include 가드를 써서는 안 된다. ( Always write internal #include guards. Never write external #include guards. )  (0) 2009.02.24
항목 23 : 헤더 파일은 충분히 완성된 형태로 만들어라. ( Make header files self-sufficient. )  (0) 2009.02.24
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요