목록Tutorials (196)
KoreanFoodie's Study
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 9 : typedef 보다 별칭 선언을 선호하라 핵심 : 1. typedef 은 템플릿화를 지원하지 않지만, using 은 지원한다. 2. 별칭 템플릿에서는 "::type" 접미어를 붙일 필요가 없다. 템플릿 안에서 typedef 을 지칭할 때에는 "typename" 접두사를 붙여야 하는 경우가 많다. 3. C++14 는 C++11 의 모든 형식 특질 변환에 대한 using 들을 제공한다. typedef 과 using (별칭 선언, alias declaration) 이 하는 일은 동일하지만, using 이 더 직관적이다. // 함수 포..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 8 : 0 과 NULL 보다 nullptr 를 선호하라 핵심 : 1. 0 과 NULL 보다 nullptr 를 선호하라. 2. 정수 형식과 포인터 형식에 대한 오버로딩을 피하라. 리터럴 0은 int 이지 포인터가 아니다. 포인터만 사용할 수 있는 위치에 0 이 있으면 C++ 은 마지못해 이를 null 포인터로 해석하지만, 이는 최후의 수단일 뿐이다. // f 의 세 가지 오버로딩 void f(int); void f(bool); void f(void*); ... // f(void*) 가 아닌 f(int) 호출 f(0); // 컴파일 되지 ..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 7 : 객체 생성 시 괄호'( )' 와 중괄호'{ }' 를 구분하라 핵심 : 1. 중괄호 초기화는 가장 광범위하게 적용할 수 있는 초기화 구문이며, 좁히기 변환을 방지하며, C++ 의 가장 성가신 구문 해석에서 자유롭다. 2. 생성자 오버로딩 해소 과정에서 중괄호 초기화는 가능한 한 std::initializer_list 매개변수가 있는 생성자와 부합한다. 3. 괄호와 중괄호의 선택이 의미 있는 차이를 만드는 예는 인수 두 개로 std::vector 을 생성하는 것이다. 4. 템플릿 안에서 객체를 생성할 때 괄호를 사용할 것인지 중괄호..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 6 : auto 가 원치 않은 형식으로 연역될 때는 명시적 형식의 초기치를 사용하라 핵심 : 1. "보이지 않는" 대리자 형식 때문에 auto 가 초기화 표현식의 형식을 "잘못" 연역할 수 있다. 2. 형식 명시 초기치 관용구는 auto 가 원하는 형식을 연역하도록 강제한다. 다음 예시를 보자. class Widget {}; std::vector feature(const Widget& w) { return std::vector(10); } void processWidget(Widget w, bool highPriority) { /* D..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 5 : 명시적 형식 선언보다는 auto 를 선호하라 핵심 : 1. auto 변수는 반드시 초기화 해야 하며, 이식성 또는 효율성 문제를 유발할 수 있는 형식 불일치가 발생하는 경우가 거의 없으며, 대체로 변수의 형식을 명시적으로 지정할 때보다 타자량도 더 적다. 2. auto 로 형식을 지정한 변수는 항목 2 와 항목 6 에서 설명한 문제점들을 겪을 수 있다. 아래 예시를 보면, auto 를 쓰는 것이 여러모로 훌륭하다는 것을 한눈에 파악할 수 있을 것이다. template void print_from_b_to_e(It b, It e)..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 4 : 연역된 형식을 파악하는 방법을 알아두라 핵심 : 1. 컴파일러가 연역하는 형식을 IDE 편집기나 컴파일러 오류 메시지, Boost TypeIndex 라이브러리를 이용해서 파악할 수 있는 경우가 많다. 2. 일부 도구의 결과는 유용하지도 않고 부정확할 수 있으므로, C++ 의 형식 연역 규칙들을 제대로 이해하는 것은 여전히 필요한 일이다. 형식 연역 정보를 얻는 방법은 세 가지 시점으로 분류할 수 있다. 1. IDE 편집기 2. 컴파일러의 진단 메시지 decltype 을 사용하면 다음과 같은 경우, 타입을 컴파일 타임에 알아낼 수..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 3 : decltype 의 작동 방식을 숙지하라 핵심 : 1. decltype 은 항상 변수나 표현식의 형식을 아무 수정 없이 보고한다. 2. decltype 은 형식이 T 이고 이름이 아닌 왼값 표현식에 대해서는 항상 T& 형식을 보고한다. 3. C++14 는 decltype(auto) 를 지원한다. decltype(auto)는 auto 처럼 초기치로부터 형식을 연역하지만, 그 형식 연역 과정에서 decltype 의 규칙들을 적용한다. 컨테이너의 operator[ ] 반환 형식을 손쉽게 표현해 보자. template auto auth..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 2 : auto 의 형식 연역 규칙을 숙지하라 핵심 : 1. auto 형식 연역은 대체로 템플릿 형식 연역과 같지만, auto 형식 연역은 중괄호 초기치가 std::initializer_list 를 나타낸다고 가정하는 반면, 템플릿 형식 연역은 그렇지 않다는 차이가 있다. 2. 함수의 반환 형식이나 람다 매개변수에 쓰인 auto 에 대해서는 auto 형식 연역이 아니라 템플릿 형식 연역이 적용된다. 한 가지 기이한 예외를 빼면, auto 형식 연역이 곧 템플릿 형식 연역이다. 그 기이한 한 가지 다른 예외를 보자. #include #i..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 1 : 템플릿 형식 연역 규칙을 숙지하라 핵심 : 1. 템플릿 형식 연역 도중 참조 형식의 인수들은 비참조로 취급된다. 즉, 참조성이 무시된다. 2. 보편 참조 매개변수에 대한 형식 연역 과정에서 왼값 인수들은 특별하게 취급된다. 3. 값 전달 방식의 매개변수에 대한 형식 연역 과정에서 const 또는 volatile(또는 그 둘 다인) 인수는 비 const, 비 volatile 인수로 취급된다. 4. 템플릿 형식 연역 과정에서 배열이나 함수 이름에 해당하는 인수는 포인터로 붕괴한다. 단, 그런 인수가 참조를 초기화하는데 쓰이는 경우,..
C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다! 항목 55 : Boo子有親! 부스트를 늘 여러분 가까이에 핵심 : 1. 부스트는 C++ 표준화에 있어 영향력 있는 오픈 소스 C++ 라이브러리 개발 모임이다. 2. 부스트의 다양한 라이브러리를 살펴보자 부스트 라이브러리는 엄격한 심사를 통해 높은 품질의 코드를 제공한다. 예시는 정말 다양한데, 웹사이트를 들어가서 다양한 라이브러리를 구경해 보자!