본문 바로가기

컴퓨터/Modern Effective C++ 정리16

Modern Effective C++ Item 10 : enum <<< enum class Item 10 : enum 2015. 3. 24.
Modern Effective C++ Item 6 : auto로 안되면 명타초 쓰자 tem 6 : auto가 안되면 명타초를 쓰자.auto의 빈틈 : 특수한 벡터 std::vectorstd::vector는 확장가능한 배열 템플릿 클래스로 임의의 타입 T에 대한 연속적인 배열을 만들어준다. 그런데 T가 bool 인 경우 메모리 낭비를 막기 위하여 특수하게 다른 형태로 구현된다. std::vector은 각 원소들을 하나의 비트로 표현하고 연속된 비트로 bool의 배열을 만들어 준다.일반적인 벡터 std::vector의 operator[]의 리턴 형식은 T&이다. 그러나 C++ 에서 하나의 비트에 대한 참조가 불가능하기 때문에 일반적인 방법으로는 배열의 원소에 접근하는 것이 어렵다. 이 해결을 위해 마치 bool&처럼 작동하는 프록시 오브젝트 std::vector::reference가 사용된.. 2015. 3. 10.
Modern Effective C++ Item 5 : auto는 우월하다 Item 5 auto는 우월하다.auto의 개나소나 알 수 있는 장점일반 타입은 초기화 하지 않은 변수를 허용하므로 분명하게 정의되지 않는 경우가 있다. 반면 auto는 초기화 하지 않고서 사용할 수 없다. int x1; //초기화 되지 않은 상태로 작동 auto x2; //컴파일 에러 auto x3 = 0; //x3이 잘 정의된 상태로 작동타입명이 지나치게 긴 경우 가독성을 해친다. 이 경우 auto를 사용하여 간결하게 표현할 수 있다. C++14의 경우 람다의 매개 변수 타입에 auto를 사용할 수 있다. std::function derefUPLess = [](const std::unique_ptr& p1, const std::unique_ptr& p2) { return *p1 < *p2; }; //.. 2015. 3. 10.
Modern Effective C++ Item 2 : auto 에서의 타입추론 Item 2 : auto 의 타입 추론auto의 타입 추론은 template의 타입 추론의 다른 형태auto 는 내부적(개념적)으로 템플릿 함수를 호출하여 T의 결과를 auto로 추론한다.auto x = 27;위의 오토 선언은 아래의 템플릿함수와 함수 호출로 대체될 수 있다.template void func_for_x(T param); //auto는 T로 변화하고 void(ParamType) 형의 함수가 만들어 진다. func_for_x(27); //이 함수를 호출했을때 템플릿 함수의 타입추론 과정을 그대로 따라가면, //param이 int가 되고 T가 int로 매칭된다. 따라서 auto 는 int임을 추론할 수 있다.Item 1 의 모든 내용은 auto에서 똑같이 적용됨case 1 : 형식 지정자가 포.. 2015. 3. 3.