일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 반복자
- implicit conversion
- 비교 함수 객체
- more effective c++
- reference
- Smart Pointer
- operator new
- 메타테이블
- 게임
- 영화
- UE4
- 참조자
- 언리얼
- 다형성
- exception
- resource management class
- 티스토리챌린지
- 예외
- Effective c++
- virtual function
- effective modern c++
- effective stl
- 영화 리뷰
- 상속
- 오블완
- 함수 객체
- 스마트 포인터
- c++
- lua
- 암시적 변환
- Today
- Total
목록effective modern c++ (5)
스토리텔링 개발자
항목 5. 명시적 타입 선언보다는 auto를 선호하라 auto를 사용하는게 좋은 상황들// 1.int x;// 깜빡 잊고 초기화하지 않았다!// 2.templatevoid dwim(It b, It e){ for(; b != e; ++b) { typename std::iterator_traits::value_type currValue = *b; ... }}// 반복자가 가리키는 값의 타입이 지나치게 길다.// 3.// 클로저의 타입으로 지역 변수를 선언해보자.// 클로저의 타입은 컴파일러만 알고 있으므로 명시적으로 지정하는 것은 애초에 불가능하다.. 해결// 1.int x1; // 문맥에 따라 초기화되지 않을 수 있다.auto x2; // 컴파일 에러auto..
항목 4. 추론된 타입을 파악하는 방법을 알아두라 추론 타입 확인 방법 세 가지코드를 작성, 수정하는 시점(IDE 편집기)컴파일 시점(컴파일 에러를 통한 확인)런타임 시점(코드 삽입을 통한 타입 정보 출력) IDE 편집기프로그램 개체(변수, 매개변수, 함수 등) 위에 마우스 커서를 올리면 그 개체의 타입을 표시해 주는 것이 많다.IDE 안에서 C++ 컴파일러(혹은 컴파일러의 front가) 실행되기 때문에 가능한 것.그러므로 코드가 컴파일 될 수 있는 상태여야 한다.복잡한 타입의 경우 그리 도움이 되지 않을 수 있다. 컴파일러 에러 메시지일부러 문제를 발생시킨다면, 에러 메시지에는 그 문제를 일으킨 타입이 언급된다.// TD를 선언만 해둔다. TD는 "Type Dispalyer(형식 표시기)"를..
항목 3. decltype의 작동 방식을 숙지하라 decltype주어진 이름이나 표현식의 타입을 알려준다.하지만 가끔 예상 밖의 결과를 제공하기도 한다.C++11에서는 함수의 리턴 타입을 매개변수 타입들로 추론해야 하는 함수 템플릿을 선언할 때 주로 사용한다. decltype의 예측할 수 있는 결과const int i = 0;// decltype(i) = const intbool f(const Widget& w);// decltype(w) = const Widget&// decltype(f) = bool(const Widget&)struct Point{ int x, y;};// decltype(Point::x) = int// decltype(Point::y) = intWidget w;//de..
항목 2. auto의 형식 연역 규칙을 숙지하라 auto와 template의 타입 추론한 가지 기이한 예외를 제외하면, auto 타입 추론이 곧 템플릿 타입 추론이다.// 템플릿 타입 추론// expr과 ParamType의 타입을 통해 T를 추론한다.templatevoid f(ParamType param);f(expr); // 함수 실행// auto 타입 추론// auto : T와 동일한 역할// 변수의 타입 지정자(type specifier) : ParamType과 동일한 역할// 각각 아래의 주석 코드의 템플릿 타입 추론과 동일하다.auto x = 27; // 타입 지정자 : auto// template// void func_for_x(T param);// func_for_x(27);const a..
항목 1. 템플릿 형식 연역 규칙을 숙지하라 auto의 타입 추론모던 C++의 강력한 기능 중 하나인 auto는 템플릿 타입 추론을 기반으로 작동한다.즉, C++98에서 템플릿 타입 추론에 만족했다면, auto 역시 만족할 것이다.하지만, auto는 템플릿에 비해 덜 직관적일 때가 왕왕 있다.그러므로 우선 템플릿 타입 추론 규직을 잘 짚어볼 필요가 있다. 템플릿의 타입 추론templatevoid f(ParamType param);f(expr); // 어떤 표현식으로 f를 호출컴파일러는 expr(표현식)을 이용해서 두 가지 타입을 추론한다.T 타입ParamType 타입위의 두 타입은 같을 수도 있지만, 보통은 다르다. 아래의 예제로 명확해진다.templatevoid f(const T& param);..