- 순서
- const 키워드란?
- const 키워드의 주요 역할
- 상수표현식
- const 키워드 장단점
- const 키워드란?
- 변수나 객체의 값이 초기화된 이후 변경되지 않도록 하는 상수임을 나타내며, 컴파일러가 해당 값의 수정을 막아 코드의 안정성을 높임
- 변수를 선언할 때 자료형 앞에 붙여 해당 변수가 상수임을 명시함
- 다른 const 문법과 함께 사용될 때는 위치에 따라 포인터가 가리키는 대상의 값을 변경하지 못하게 하거나, 포인터 자체의 주소 변경을 막는 등의 적용 범위가 달라짐.
- const를 선언할 때 동시에 반드시 초기화가 필요함
- const 키워드의 주요 역할
- 값 불변성 보장: const로 선언된 변수는 초기화된 후에는 값을 변경할 수 없음 => 이는 코드의 일관성을 유지하고 의도하지 않은 값 변경을 방지하여 안정성을 높여줌
- 컴파일러에 의한 제어: const는 컴파일러에게 해당 변수의 수정이 불가능함을 지시하며, 이를 어길 경우 컴파일 오류가 발생하여 안전하게 코드를 관리할 수 있음
- 가독성 및 유지보수성 향상: 변수가 변경되지 않는 상수임을 명시함으로써 코드의 의도를 명확히 하고, 다른 개발자가 코드를 이해하고 유지보수하기 쉬워짐.
- 상수표현식
- 상수 표현식으로 constexpr가 존재함
- constexpr은 컴파일 타임 상수로 값이 프로그램 컴파일 시점에 결정될 수 있음.
- const는 때에 따라서 런타임 상수가 될 수도 있기 때문에 constexpr를 사용하면 가능하면 컴파일 타임에 평가됨.
- const 키워드 장단점
- 장점
- 안정성: 프로그램 실행 중 의도치 않은 값 변경으로 인한 버그를 예방
- 의도 명확: 코드 상에서 변하지 않아야 하는 값이나, 변경이 불필요한 객체에 const를 사용하여 코드의 의도를 명확하게 함
- 컴파일러 최적화 가능: const 변수, 특히 constexpr은 컴파일 타임 상수로 처리 가능하며, 반복문, 배열 크기, 상수 표현식에서 최적화가 가능
- API 안정성: 함수에서 매개변수를 const로 받으면, 호출자가 값이 변경되지 않음을 신뢰할 수 있음, 멤버 함수에 const를 붙이면 객체 상태가 변경되지 않음을 보장함
- 외부 파일과의 안전한 연결: 캡슐화 효과
- 단점
- 값 변경 불가: 의도적으로 값 변경이 필요한 경우 사용이 불가하여 변수 선언 시 잘 판단해야함
- 원래 const 데이터 수정 위험: const_cast를 사용해 const 제거가 가능하지만, 원래 const 데이터를 수정하면 정의되지 않은 동작이 일어남
- 초기화 필요: const 변수는 반드시 선언과 동시에 초기화를 해야하여 런타임 조건에 따라 초기화가 어려운 경우 제한됨.
- 전역 const 변수의 외부 접근 제한: 기본적으로 내부 링크 > 다른 파일에서 접근하려면 extern const 필요
- 포인터와 조합 시 혼동 가능: 포인터에서 const의 위치가 어디인가에 따라서 의미가 다르기 때문에 혼동 가능함.
- 장점
'C++' 카테고리의 다른 글
| [C++] 바인딩 (0) | 2025.09.03 |
|---|---|
| [C++] 가상 함수 (0) | 2025.09.03 |
| [C++]static 키워드 (0) | 2025.09.03 |
| [C++] 캐스트 연산자/RTTI (0) | 2025.09.03 |
| [C++] malloc/free와 new/delete (0) | 2025.09.03 |