c++
[Effective C++]항목 3: 낌새만 보이면 const를 들이대 보자!
포인터에도 const사용해야하는 경우에는 적극적으로 사용한다. 1) 포인터 주소를 const = * const type 포인터명 2) 데이터 = const * type 포인터명 / const type *포인터명 포인터의 사용은 프로그래머의 실수를 줄여준다. const는 컴파일러에서 상수화해주기 때문에 성능을 좀 더 높일 수 있다. 상수성에는 크게 비트수준 상수성, 물리적 상수정, 논리적 상수성이 있으며, C++에서 정의하는 상수성은 비트수준 상수성이다. 비트수준의 상수성은 비트수준에서 변경점이 없어야한다. 컴파일러는 대입연산이 수행되었는지만 확인해보면 된다. 상수 멤버함수에서 데이터를 수정하려면 변수 앞에 mutable을 붙여서 상수 멤버함수 안에서 수정이 가능하나, 좋은 방법은 아니므로 꼭 필요한 상황..
[Effective C++]항목 2: #define을 쓰려거든 const, enum, inline을 떠올리자
#define으로 선언하게 되면 값의 이름은 symbol table에 들어가지 않으므로 이슈 발생 시 Debugging으로 추적이 불가하다. 따라서, #define PI 3.14 => const double PI = 3.14; 로 선언하는 것이 좋다. 또한, 여러 번 사용하더라도 한 개의 사본만 생성하기 때문에, #define을 사용하는 것에 비해 바이너리 사이즈를 감소시킬 수 있다. * symbol table: 컴파일러에서 생성한 변수나 함수의 이름들을 말한다.