티스토리 뷰
Effective Modern 이펙티브 모던 C++ |
차례
1장. 형식 연역
2장. auto
3장. 현대적 C++ 적응하기
4장. 스마트 포인터
5장. 오른값 참조, 이동 의미론, 완벽 전달
6장. 람다 표현식
7장. 동시성 API
8장. 다듬기
Item 7: 객체 생성 시 괄호 ()와 중괄호 {}를 구분하라
기억해 둘 사항들
- 중괄호 초기화는 가장 광범위하게 적용할 수 있는 초기화 구문이며, 좁히기 변환을 방지하며, C++의 가장 성가신 구문 해석에서 자유롭다.
- 생성자 중복적재 해소 과정에서 중괄호 초기화는 가능한 한 std::initializer_list 매개변수가 있는 생성자와 부합한다(심지어 겉으로 보기에 그보다 인수들에 더 잘 부합하는 생성자들이 있어도).
- 괄호와 중괄호의 선택이 의미 있는 차이를 만드는 예는 인수 두 개로 std::vector<수치형식>을 생성하는 것이다.
- 템플릿 안에서 객체를 생성할 때 괄호를 사용할 것인지 중괄호를 사용할 것인지 선택하기가 어려울 수 있다.
Item 8: 0과 NULL보다 nullptr를 선호하라
리터럴 0은 int이지 포인터가 아니다. 포인터만 사용할 수 있는 위치에 0이 있으면 마지못해 그것을 null 포인터로 해석하긴 하지만, 이는 최후의 수단일 뿐이다. C++의 기본적인 방침은, 0은 int이지 포인터가 아니라는 것이다.
nullptr의 장점은 이것이 정수 형식이 아니라는 점이다. 사실 포인터 형식도 아니다. nullptr는 모든 형식의 포인터라고 생각하면 된다. nullptr의 실제 형식은 std::nullptr_t인데, std::nullptr_t 자체는 다시 "nullptr의 형식"으로 정의된다. std::nullptr_t는 모든 생 포인터 형식으로 암묵적으로 변환되며, 이 덕분에 nullptr은 마치 모든 형식의 포인터처럼 행동한다.
기억해 둘 사항들
- 0과 NULL보다 nullptr를 선호하라.
- 정수 형식과 포인터 형식에 대한 중복적재를 피하라.
Item 9: typedef보다 별칭 선언을 선호하라
기억해 둘 사항들
- typedef는 템플릿화를 지원하지 않지만, 별칭 선언은 지원하다.
- 별칭 템플릿에서는 "::type" 접미어를 붙일 필요가 없다. 템플릿 안에서 typdef를 지칭할 때에는 "typename" 접두사를 붙여야 하는 경우가 많다.
- C++14는 C++11의 모든 형식 특질 변환에 대한 별칭 템플릿들을 제공한다.
Item 10: 범위 없는 enum보다 범위 있는 enum을 선호하라
기억해 둘 사항들
- C++98 스타일의 enum을 이제는 범위 없는 enum이라고 부른다.
- 범위 있는 enum의 열거자들은 그 안에서만 보인다. 이 열거자들은 오직 캐스팅을 통해서만 다른 형식으로 변환된다.
- 범위 있는 enum과 범위 없는 enum 모두 바탕 형식 지정을 지원한다. 범위 있는 enum의 기본 바탕 형식은 int이다. 범위 없는 enum에는 기본 바탕 형식이 없다.
- 범위 있는 enum은 항상 전방 선언이 가능하다. 범위 없는 enum은 해당 선언에 바탕 형식을 지정하는 경우에만 전방 선언이 가능하다.
참고
예제, https://github.com/BartVandewoestyne/Effective-Modern-Cpp
std::initializer_list, http://en.cppreference.com/w/cpp/utility/initializer_list
Andrzej's C++ blog: Intuitive interface — Part I, https://akrzemi1.wordpress.com/2013/06/05/intuitive-interface-part-i/
- James Song
'Books_tech' 카테고리의 다른 글
스콧 마이어스 <이펙티브 모던 C++> Item 15-17 요약 (0) | 2016.04.02 |
---|---|
스콧 마이어스 <이펙티브 모던 C++> Item 11-14 요약 (0) | 2016.03.28 |
프로그래밍에 대한 광범위한 지침 <훌륭한 프로그래머 되는 법> 정리 #1 (0) | 2016.03.19 |
스콧 마이어스 <이펙티브 모던 C++> Item 3-6 요약 (0) | 2016.03.17 |
로버트 마틴과 장인 정신 <클린 코드> 요약 #3 (2) | 2016.03.04 |
- #프로그래밍심리학
- #로버트마틴
- #csharp
- 상속
- #techdays2015
- 책
- #ndc
- #임백준
- Effective Modern C++
- #레거시코드
- 객체 지향 설계
- #클린코드
- #스콧마이어스
- Scott Meyers
- Effective C++
- #ModernCPP
- #cplusplus
- #mva
- #마이클페더스
- #코드최적화
- #세미나
- #scottmeyers
- #EffectiveModernCpp
- #제럴드와인버그
- #build2016
- #알고리즘
- #uwp
- #cpp
- #팀개발
- #자녀교육
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |