항목 3 : 낌새만 보이면 const를 들이대 보자! const의 장점은 '의미적인 제약'을 소스 코드 수준에서 붙인다는 점과 컴파일러가 이 제약을 단단히 지켜준다는 점일 것입니다. const 키워드는 클래스 바깥에서는 전역 혹은 네임스페이스 유효범위의 상수를 선언(정의)하는 데 쓸 수 있습니다. 그뿐 아니라 파일, 함수, 블록 유효범위에서 static으로 선언한 객체에도 const를 붙일 수 있습니다. 클래스 내부의 경우에는, 정적 멤버 및 비정적 데이터 멤버 모두를 상수로 선언할 수 있습니다. 포인터에서 const는 아래와 같이 사용할 수 있습니다. 1 2 const int * a = data // 비상수 포인터, 상수 데이터 int * const a = data // 상수 포인터, 비상수 데이터 1..
항목 2 : #define을 쓰려거든 const, enum, inline을 떠올리자 #define ASPECT_RATIO 1.653 이라는 코드를 작성했을때 작성자에게는 ASPECT_RATIO가 기호식 이름으로 보이지만 컴파일러에게는 보이지가 않습니다. 선행 처리자가 숫자 상수로 바꾸어 버리기 때문입니다. 그 결과로, ASPECT_RATIO라는 이름은 컴파일러가 쓰는 기호 테이블에 들어가지 않습니다. 만약 숫자 상수로 대체된 코드에서 컴파일 에러라도 발생하면 헷갈릴 수 있는 여지가 존재합니다. 이 문제의 해결법은 매크로 대신 상수를 쓰는 것입니다. const double AspectRatio = 1.653; AspectRatio는 언어 차원에서 지원하는 상수 타입의 데이터이기 때문에 컴파일러의 눈에도 보..
항목 1 : C++를 언어들의 연합체로 바라보는 안목은 필수 오늘날의 C++는 다중패러다임 프로그래밍 언어라고 불린다. 절차적 프로그래밍을 기본으로 하여 객체 지향, 함수식, 일반화 프로그래밍을 포함하며 메타프로그래밍 개념까지 지원하고 있다. C++을 단일 언어로 바라보는 시야를 넓혀 상관관계가 있는 여러 언어들의 연합체로 보자! 1. C 2. 객체 지향 개념의 C++ 3. 템플릿 C++ 4. STL 즉 C++은 한 가지 프로그래밍 규칙 아래 똘똘 뭉친 통합 언어가 아니라 네 가지 하위 언어들의 연합체이다! 꼭 잊지 말아야 할 것! C++를 사용한 효과적인 프로그래밍 규칙은 경우에 따라 달라진다. 그 경우는 C++의 어떤 부분을 사용하느냐이다.