티스토리 뷰
Effective Modern 이펙티브 모던 C++ |
차례
1장. 형식 연역
2장. auto
3장. 현대적 C++ 적응하기
4장. 똑똑한 포인터
5장. 오른값 참조, 이동 의미론, 완벽 전달
6장. 람다 표현식
7장. 동시성 API
8장. 다듬기
Item 20: std::shared_ptr처럼 작동하되 대상을 잃을 수도 있는 포인터가 필요하면 std::weak_ptr를 사용하라
기억해 둘 사항들
- std::shared_ptr처럼 작동하되 대상을 잃을 수도 있는 포인터가 필요하면 std::weak_ptr를 사용하라.
- std::weak_ptr의 잠재적인 용도로는 캐싱, 관찰자 목록, 그리고 std::shared_ptr 순환 고리 방지가 있다.
Item 21: new를 직접 사용하는 것보다 std::make_unique와 std::make_shared를 선호하라
기억해 둘 사항들
- new의 직접 사용에 비해, make 함수를 사용하면 소스 코드 중복의 여지가 없어지고, 예외 안전성이 향상되고, std::make_shared와 std::allocate_shared의 경우 더 작고 빠른 코드가 산출된다.
- make 함수의 사용이 불가능 또는 부적합한 경우로는 커스텀 삭제자를 지정해야 하는 경우와 중괄호 초기치를 전달해야 하는 경우가 있다.
- std::shared_ptr에 대해서는 make 함수가 부적합한 경우가 더 있는데, 두 가지 예를 들자면 (1) 커스텀 메모리 관리 기능을 가진 클래스를 다루는 경우와 (2) 메모리가 넉넉하지 않은 시스템에서 큰 객체를 자주 다루어야 하고 std::weak_ptr들이 해당 std::shared_ptr들보다 더 오래 살아남는 경우이다.
Item 22: Pimpl 관용구를 사용할 때에는 특수 멤버 함수들을 구현 파일에서 정의하라
기억해 둘 사항들
- Pimpl 관용구는 클래스 구현과 클래스 클라이언트 사이의 컴파일 의존성을 줄임으로써 빌드 시간을 감소한다.
- std::unique_ptr 형식의 pImpl 포인터를 사용할 때에는 특수 멤버 함수들을 클래스 헤더에 선언하고 구현 파일에서 구현해야 한다. 컴파일러가 기본으로 작성하는 함수 구현들을이 사용하기에 적합한 경우에도 그렇게 해야 한다.
- 위의 조언은 std::unique_ptr에 적용될 뿐, std::shared_ptr에는 적용되지 않는다.
참고
예제, https://github.com/BartVandewoestyne/Effective-Modern-Cpp
- James Song
'Books_tech' 카테고리의 다른 글
호기심 많은 제프 앳우드의 <코딩 호러의 이펙티브 프로그래밍> (0) | 2016.08.06 |
---|---|
배우고 즐기고 해결하고 공유하라 <대살개문> (0) | 2016.07.16 |
스콧 마이어스 <이펙티브 모던 C++> Item 18-19 요약 (0) | 2016.05.14 |
코드 튜닝을 위한 규칙 <생각하는 프로그래밍> (0) | 2016.05.07 |
재미있는 알고리즘 이야기 <누워서 읽는 알고리즘> (2) | 2016.04.16 |
- #techdays2015
- #scottmeyers
- #ModernCPP
- #csharp
- 책
- #ndc
- #로버트마틴
- #코드최적화
- #cpp
- #마이클페더스
- #프로그래밍심리학
- #mva
- Scott Meyers
- #build2016
- #EffectiveModernCpp
- Effective C++
- #자녀교육
- #임백준
- 객체 지향 설계
- #팀개발
- #uwp
- #스콧마이어스
- Effective Modern C++
- #레거시코드
- 상속
- #세미나
- #제럴드와인버그
- #클린코드
- #알고리즘
- #cplusplus
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |