반응형
- 포인터에도 const사용해야하는 경우에는 적극적으로 사용한다.
- 1) 포인터 주소를 const = * const type 포인터명
- 2) 데이터 = const * type 포인터명 / const type *포인터명
- 포인터의 사용은 프로그래머의 실수를 줄여준다.
- const는 컴파일러에서 상수화해주기 때문에 성능을 좀 더 높일 수 있다.
- 상수성에는 크게 비트수준 상수성, 물리적 상수정, 논리적 상수성이 있으며, C++에서 정의하는 상수성은 비트수준 상수성이다.
비트수준의 상수성은 비트수준에서 변경점이 없어야한다. 컴파일러는 대입연산이 수행되었는지만 확인해보면 된다. - 상수 멤버함수에서 데이터를 수정하려면 변수 앞에 mutable을 붙여서 상수 멤버함수 안에서 수정이 가능하나, 좋은 방법은 아니므로 꼭 필요한 상황이 아닌 경우에는 사용하지 않도록 한다. const라고 붙여진 의미를 먼저 파악하고, mutable을 사용했을 때 그 의미가 훼손되거나 변경되었다는 흔적없이 변경이 될 수 있는지 미리 고민을 해봐야한다.
- const도 오버로딩이 되므로 중복코드 관련부분은 const_cast가 중요하다.
- iterator앞에 const_iterator와 iterator붙이는 차이에 대해서 정확하게 알아야한다.
1) const_iterator : const T* 포인터의 형태와 같이 const 값을 가리키는 반복자이고 const T& 형태의 참조를 반환하게 됩니다. 포인터를 통해 값 변경이 불가합니다.
2) iterator: 포인터를 통해서 값을 변경가능합니다.
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
[Effective C++]항목 2: #define을 쓰려거든 const, enum, inline을 떠올리자 (0) | 2022.01.28 |
---|---|
[Effective C++]항목 1: C++를 언어들의 연합체로 바라보는 안목은 필수 (0) | 2022.01.28 |