티스토리 뷰
Effective Modern 이펙티브 모던 C++ |
차례
1장. 형식 연역
2장. auto
3장. 현대적 C++ 적응하기
4장. 스마트 포인터
5장. 오른값 참조, 이동 의미론, 완벽 전달
6장. 람다 표현식
7장. 동시성 API
8장. 다듬기
Item 3: decltype의 작동 방식을 숙지하라
기억해 둘 사항들
- decltype은 항상 변수나 표현식의 형식을 아무 수정 없이 보고한다.
- decltype은 형식이 T이고 이름이 아닌 왼값 표현식에 대해서는 항상 T& 형식을 보고한다.
- C++14는 decltype(auto)를 지원한다. decltype(auto)는 auto처럼 초기치로부터 형식을 연역하지만, 그 형식 연역 과정에서 decltype의 규칙들을 적용한다.
Item 4: 연역된 형식을 파악하는 방을 알아두라
기억해 둘 사항들
- 컴파일러가 연역하는 형식을 IDE 편집기나 컴파일러 오류 메시지, Boost TypeIndex 라이브러리를 이용해서 파악할 수 있는 경우가 많다.
- 일부 도구의 결과는 유용하지도 않고 정확하지도 않을 수 있으므로, C++의 형식 연역 규칙들을 제대로 이해하는 것은 여전히 필요한 일이다.
Item 5: 명시적 형식 선언보다는 auto를 선호하라
일반적으로 std::function 접근방식은 auto 접근방식보다 메모리와 시간을 더 많이 소비하며, 때에 따라서는 메모리 부족(out-of-memory) 예외를 유발할 수도 있다.
auto의 장점이 변수 초기화 누락을 방지하고 장황한 변수 선언을 피하는 것, 그리고 클로저를 직접 담는 것에서 그치는 것은 아니다. 또 다른 장점은 "형식 단축(type shortcut)"이라고 부르는 것과 관련된 문제를 피할 수 있다는 것이다.
사실 형식을 명시적으로 표기하는 것은 그냥 정확성 또는 효율성(또는 둘 다)면에서 미묘한 실수의 여지가 될 뿐, 별다른 득이 없다. 더 나아가서, auto 형식들은 초기화 표현식의 형식이 변하면 자동으로 변한다. 이는 auto를 사용하면 리팩토링이 어느 정도 수월해짐을 의미한다.
기억해 둘 사항들
- auto 변수는 반드시 초기화해야 하며, 이식성 또는 효율성 문제를 유발할 수 있는 형식 불일치가 발생하는 경우가 거의 없으며, 대체로 변수의 형식을 명시적으로 지정할 때보다 타자량도 더 적다.
- auto 형식을 지정한 변수는 Item 2와 Item 6에서 설명한 문제점들을 겪을 수 있다.
Item 6: auto가 원치 않은 형식으로 연역될 때에는 명시적 형식의 초기치를 사용하라
대리자 클래스(Proxy Class)
실제 클래스를 대신해서 일하는 클래스
- std::vector<bool>::reference 처럼 operatoer[] 연산 시 참조되는 bit를 대신하기 위해 사용
- STL에서 스마트포인터도 raw pointer를 관리하기 위한 대리자 클래스
다음과 같은 형태의 코드는 피해야 한다.
auto someVar = "보이지 않는" 대리자 클래스 형식의 표현식;
기억해 둘 사항들
- "보이지 않는" 대리자 형식 때문에 auto가 초기화 표현식의 형식을 "잘못" 연역할 수 있다.
- 형식 명시 초기치 관용구는 auto가 원하는 형식을 연역하도록 강제한다.
참고
샘플 코드 https://github.com/BartVandewoestyne/Effective-Modern-Cpp
- James Song
'Books_tech' 카테고리의 다른 글
스콧 마이어스 <이펙티브 모던 C++> Item 7-10 요약 (0) | 2016.03.23 |
---|---|
프로그래밍에 대한 광범위한 지침 <훌륭한 프로그래머 되는 법> 정리 #1 (0) | 2016.03.19 |
로버트 마틴과 장인 정신 <클린 코드> 요약 #3 (2) | 2016.03.04 |
로버트 마틴과 장인 정신 <클린 코드> 요약 #2 (0) | 2016.02.28 |
로버트 마틴과 장인 정신 <클린 코드> 요약 #1 (0) | 2016.02.25 |
- #EffectiveModernCpp
- #uwp
- Effective Modern C++
- 객체 지향 설계
- #csharp
- #techdays2015
- 상속
- #세미나
- #프로그래밍심리학
- Effective C++
- #클린코드
- #코드최적화
- #cpp
- #mva
- 책
- #build2016
- #임백준
- #ndc
- #스콧마이어스
- #ModernCPP
- #로버트마틴
- #scottmeyers
- #마이클페더스
- #자녀교육
- #cplusplus
- #레거시코드
- #알고리즘
- #팀개발
- Scott Meyers
- #제럴드와인버그
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |