부재 : 가급적 선행 처리자보다 컴파일러를 더 가까이 하자. 이유 1. 컴파일러는 #define을 알아차리지 못하기 때문에, 디버그가 힘들어지기 때문이다. 주의점 1. const로 상수화 시킬때 포인터라면 데이터와 포인터 역시 막아야 한다. - const char * const authorname = "Scott Meyers"; 2. 클래스 상수 멤버상수는 static const int a = 5; 로 사용 하면 좋다. 3. 클래스를 컴파일 도중 클래스 상수(클래스에서만 쓰일) 값이 필요하다면 enum을 사용 하는게 좋다. - enum에 대한 참조자를 갖지 못한다. - 메모리를 사용하지 않는다. 4. #define 함수는 잦은 버그가 있기 때문에 inline함수를 하면 더 좋다. 이것만은 잊지 말자! 1..
상수 검색 결과
해당 글 2건
항목 2. #define을 쓰려거든 const, enum, inline을 떠올리자.
책 정리/Effective C++ 3판
2008. 5. 29. 22:50
항목 21. 가능한 const를 이용한다.
항목 21. 가능한 const를 이용한다. 이유 1. 여러 상황속에서 내가 정의한 데이터가 아무렇게나 변경 될수 있다. - 포인터, 레퍼런스로써 가리킨 데이터가 private인경우에도 변경되는 경우와 마찬가지다. 2. operator 의 반환값이 const 가 아닐경우 a * b = c 와 같은 경우 무슨일은 한거같은 느낌만 들기 때문이다.(실험해 보면 재미잇다) 해결 방법 1. const 키워드를 넣을수 있는 곳에는 주저말고 넣자. 2. 포인터로 값을 전달하게 될때는 이중 const로 묶어 놓자. 참조 사항 1. 내부 함수가 레퍼런스로 값을 반환해줄경우 private에 있는것도 접근이 가능해진다. 2. 1번의 사항은 포인터도 마찬가지다. 그러므로 이럴때 const를 사용 하면 좋다. 더 좋은것은 설계를..
책 정리/Effective C++ 2판
2008. 5. 10. 14:14
최근댓글