일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 게임
- 상속
- operator new
- reference
- Smart Pointer
- 예외
- 스마트 포인터
- virtual function
- 참조자
- 함수 객체
- 티스토리챌린지
- 언리얼
- effective stl
- c++
- 다형성
- 오블완
- UE4
- implicit conversion
- resource management class
- Effective c++
- 비교 함수 객체
- lua
- 반복자
- more effective c++
- exception
- 메타테이블
- 영화 리뷰
- 암시적 변환
- 영화
- 루아
- Today
- Total
목록Inline (2)
스토리텔링 개발자
항목 30. 인라인 함수는 미주알 고주알 따져서 이해해 두자. 인라인 함수함수처럼 보이고, 함수처럼 동작하고, 매크로보다 훨씬 안전하고 쓰기 좋다.(항목 2 참조)함수 호출 비용이 면제된다.(함수 호출 시 발생하는 오버헤드 걱정이 없다.)컴파일러가 함수 본문에 대해 문맥별(context-specific) 최적화를 해줄 여지가 높아진다.대체적으로 컴파일러 최적화는 함수 호출이 없는 코드가 연속적으로 이어지는 구간에 적용되도록 설계된다.인라인 함수는 함수 호출이 없는 것과 마찬가지로 인식되므로 최적화될 확률이 높다.실제로 대부분의 컴파일러는 아웃라인(outline) 함수 호출(일반적인 함수 호출)에 대해서는 이런 최적화를 적용하지 않는다. 인라인 함수와 프로그램 크기인라인 함수 아이디어는 함수 호출문..
항목 2. #define을 쓰려거든 const, enum, inline을 떠올리자 선행 처리자(define)의 문제선행처리자는 컴파일러로 넘어가기 전에 숫자 상수로 대체된다.컴파일러 기호 테이블에 선행처리자 상수 이름은 들어가지 않는다.선행처리자의 이름으로 디버깅할 수 없다.선행처리자는 대부분 const로 대체 가능하므로 const로 대체하도록 하자. const 정의 시 주의할 점상수 포인터를 정의하는 경우, const를 붙여주는 위치를 주의해야 한다.포인터를 const로 할 것인가, 가리키는 대상을 const로 할 것인가에 따라 const 위치가 달라진다.차라리 둘 다 const를 붙여서 모호성을 제거해주는 게 나을 것이다. 클래스 멤버로 상수를 정의하는 경우static 멤버로 해주는 편이 좋..