C++ 타입 한정자의 개념
타입 한정자(type qualifier)는 특정 타입에 적용되어 '한정된 타입(qualified type)'을 만들어내는 키워드입니다. 예를 들어 const int는 상수 정수를 의미하는 한정된 타입이며, 이에 대응하는 비한정 타입(unqualified type)은 단순히 int, 즉 일반적인 정수입니다.
타입 한정자는 타입 시스템을 통해 값에 대한 추가 정보를 표현하고, 데이터가 올바르게 사용되도록 보장하는 역할을 합니다. 컴파일러는 이 정보를 활용해 잘못된 코드 사용을 사전에 검출할 수 있습니다.
표준 C의 네 가지 타입 한정자
C11 기준으로 표준 C에는 다음과 같은 네 가지 타입 한정자가 존재합니다.
- const (C89 도입): 값이 변경될 수 없음을 명시합니다.
- volatile (C89 도입): 값이 예기치 않게 변경될 수 있음을 알려 컴파일러의 과도한 최적화를 방지합니다.
- restrict (C99 도입): 포인터가 가리키는 객체에 대한 접근이 해당 포인터로만 이루어짐을 보장하여 최적화에 도움을 줍니다.
- _Atomic (C11 도입): 원자적(atomic) 접근을 통해 멀티스레드 환경에서의 데이터 경합 문제를 방지합니다.
C++에서의 타입 한정자
이 중 const와 volatile은 C++에도 존재하며, C++에서 지원하는 유일한 타입 한정자입니다. 반면 restrict와 _Atomic은 표준 C 전용 기능으로, C++ 표준에는 포함되지 않습니다.