6월, 2016의 게시물 표시

[Effective C++ 3판] Chapter 9. 그 밖의 이야기들 (항목 53 ~ 55)

Chapter 9. 그 밖의 이야기들 (항목 53 ~ 55) 드디어 마지막 Chapter입니다!! 씬난다~ 씬나@@

항목 53. 컴파일러 경고를 지나치지 말자.[이것만은 잊지 말자]
- 컴파일러 경고를 쉽게 지나치지 맙시다. 여러분의 컴파일러에서 지원하는 최고 경고 수준에도 경고 메시지를 내지 않고 컴파일되는 코드를 만드는 쪽에 전력을 다 하십시오.
- 컴파일러 경고에 너무 기대는 인생을 지양하십시오. 컴파일러마다 트집을 잡고 경고를 내는 부분들이 천차만별이기 때문입니다. 지금 코드를 다른 컴파일러로 이식하면서 여러분이 익숙해져 있는 경고 메시지가 온 데 간 데 없이 사라질 수도 있습니다.

항목 54. TR1을 포함한 표준 라이브러리 구성요소와 편안한 친구가 되자. TR1을 얘기하기에는 요즘 시대가 너무 흘렀죠? ㅎㅎ 그래서 제가 한번 항목을 수정해보겠습니다.
Modern C++은 선택이 아니라 필수다!

항목 55. 갓 부스트! 부스트를 늘 여러분 가까이에! 갓 부-스트! 부스트 차냥해!


포스팅 거저먹는 마지막 췝터! 씬난다 씬나
지금까지 포스팅에서 사용했던 코드들은 Github에 올려놨습니다!! (https://github.com/taeguk/Effective-Cpp-Series)

[Effective C++ 3판] Chapter 8. new와 delete를 내 맘대로 (항목 49 ~ 52)

Chapter 8. new와 delete를 내 맘대로 (항목 49 ~ 52) 항목 49. new 처리자의 동작 원리를 제대로 이해하자.[new와 delete 키워드]
new/new[] 키워드 : (알맞는 operator new 호출 -> 생성자 호출) + 알파 (operator new와 생성자를 적절하게 호출하고 메타데이터등을 저장하고 관리하는 코드. 여기서 메타데이터는 new[]할때 객체의 갯수등을 의미.)
delete/delete[] 키워드 : 위와 비슷한 맥락.

[new 처리자 - new handler]
operator new의 역할 : 필요한 메모리를 적절하게 할당해서 반환해주는 역할.
new 처리자 : operator new가 메모리를 할당하는데 실패했을 때 호출되는 함수.

[new 처리자가 해야하는 동작 (아래중 하나를 해야한다.)]
- 사용할 수 있는 메모리를 더 많이 확보한다.
- 다른 new 처리자를 설치한다.
- new 처리자의 설치를 제거한다.
- 예외를 던진다.
- 복귀하지 않는다. (abort나 exit을 호출)
#include <new> // RAII방식으로 new handler을 관리하는 클래스 class NewHandlerRAII { public: explicit NewHandlerRAII(std::new_handler nh) noexcept { old = std::set_new_handler(nh); } ~NewHandlerRAII() noexcept { std::set_new_handler(old); } NewHandlerRAII(const NewHandlerRAII&) = delete; NewHandlerRAII& operator=(const NewHandlerRAII&) = delete; private: std::new_handler old; }; // class별로 new handler를 지정할 수 있는 기…