C++

[C++]const 키워드

programmer-faust 2025. 9. 3. 07:49
  • 순서
    1. const 키워드란?
    2. const 키워드의 주요 역할
    3. 상수표현식
    4. const 키워드 장단점
  • const 키워드란?
    1. 변수나 객체의 값이 초기화된 이후 변경되지 않도록 하는 상수임을 나타내며, 컴파일러가 해당 값의 수정을 막아 코드의 안정성을 높임
    2. 변수를 선언할 때 자료형 앞에 붙여 해당 변수가 상수임을 명시함
    3. 다른 const 문법과 함께 사용될 때는 위치에 따라 포인터가 가리키는 대상의 값을 변경하지 못하게 하거나, 포인터 자체의 주소 변경을 막는 등의 적용 범위가 달라짐.
    4. const를 선언할 때 동시에 반드시 초기화가 필요함
  • const 키워드의 주요 역할
    1. 값 불변성 보장: const로 선언된 변수는 초기화된 후에는 값을 변경할 수 없음 => 이는 코드의 일관성을 유지하고 의도하지 않은 값 변경을 방지하여 안정성을 높여줌
    2. 컴파일러에 의한 제어: const는 컴파일러에게 해당 변수의 수정이 불가능함을 지시하며, 이를 어길 경우 컴파일 오류가 발생하여 안전하게 코드를 관리할 수 있음
    3. 가독성 및 유지보수성 향상: 변수가 변경되지 않는 상수임을 명시함으로써 코드의 의도를 명확히 하고, 다른 개발자가 코드를 이해하고 유지보수하기 쉬워짐.
  • 상수표현식
    1. 상수 표현식으로 constexpr가 존재함
    2. constexpr은 컴파일 타임 상수로 값이 프로그램 컴파일 시점에 결정될 수 있음.
    3. const는 때에 따라서 런타임 상수가 될 수도 있기 때문에 constexpr를 사용하면 가능하면 컴파일 타임에 평가됨.
  • const 키워드 장단점
    1. 장점 
      • 안정성: 프로그램 실행 중 의도치 않은 값 변경으로 인한 버그를 예방
      • 의도 명확: 코드 상에서 변하지 않아야 하는 값이나, 변경이 불필요한 객체에 const를 사용하여 코드의 의도를 명확하게 함
      • 컴파일러 최적화 가능: const 변수, 특히 constexpr은 컴파일 타임 상수로 처리 가능하며, 반복문, 배열 크기, 상수 표현식에서 최적화가 가능
      • API 안정성: 함수에서 매개변수를 const로 받으면, 호출자가 값이 변경되지 않음을 신뢰할 수 있음, 멤버 함수에 const를 붙이면 객체 상태가 변경되지 않음을 보장함
      • 외부 파일과의 안전한 연결: 캡슐화 효과
    2. 단점
      • 값 변경 불가: 의도적으로 값 변경이 필요한 경우 사용이 불가하여 변수 선언 시 잘 판단해야함
      • 원래 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