CV-qualifiers 설명 - const와 volatile 이해하기
CV-qualifiers
0. 서문
CV-qualifiers에 대해 이야기해봅시다! const
는 상수를 표현하기 위한 것이고, volatile
은 변경 가능한(volatile) 타입을 표현하기 위한 것입니다.
STL에서는 const
와 volatile
을 함께 CV-qualifiers로 정의합니다. 여기서 확인해보세요!
1. 표기법
C++에서 CV-qualifiers와 같은 타입 수식어는 타입의 왼쪽과 오른쪽 모두에 나타날 수 있습니다.
무슨 말인지 보여드리겠습니다:
const int i = 100;
int const i = 100;
다른 프로그래밍 언어에서 오셨다면 이것이 혼란스러울 수 있습니다. 왜냐하면 const
는 보통 타입의 왼쪽에 쓰이기 때문입니다.
C와 C++에서는 위의 두 표현식이 모두 올바르고 동일합니다!
핵심 규칙은 이렇습니다:
const
는 오른쪽에서 왼쪽으로 수식하며, 왼쪽에 아무것도 없을 때만 왼쪽에서 오른쪽으로 수식합니다.
왜 이렇게 설계했을까요?
가독성의 이점
위의 예제들은 동일했지만, 포인터를 다룰 때는 달라집니다:
const char *const s = "aaa";
char const *const s = "aaa";
두 표현식은 같지만, 두 개의 const
키워드가 섞여 있다는 점에 주목하세요. 첫 번째 예제에서는 하나의 const
가 왼쪽에서 오른쪽으로 수식하고, 다른 하나는 오른쪽에서 왼쪽으로 수식합니다.
표현식이 복잡해질 때, const
를 일관되게 오른쪽에 배치하면(오른쪽에서 왼쪽으로 수식) 훨씬 더 나은 가독성을 제공합니다.
이렇게 생각해보세요:
char const *const s
는 “s는 const char에 대한 const 포인터”로 읽힙니다- 오른쪽에서 왼쪽으로 읽기: “s는 const이고, const인 char를 가리킨다”
이 규칙은 더 복잡한 포인터 선언을 다룰 때 특히 도움이 됩니다. const
를 항상 수식하는 대상의 오른쪽에 놓음으로써, 선언을 일관된 방식으로 오른쪽에서 왼쪽으로 읽을 수 있습니다.
CV-qualifiers 프로 팁
- 일관성 유지: 왼쪽 또는 오른쪽
const
중 하나를 선택하고 코드베이스 전체에서 일관되게 사용하세요 - 오른쪽에서 왼쪽으로 읽기: 많은 C++ 전문가들은 오른쪽에서 왼쪽으로 더 자연스럽게 읽히기 때문에 오른쪽
const
를 선호합니다 - 팀 표준: 팀의 코딩 표준을 따르세요 - 개인적인 선호보다 일관성이 더 중요합니다
CV-qualifiers를 제대로 이해하면 더 나은 C++ 프로그래머가 되고 더 유지보수하기 쉬운 코드를 작성하는 데 도움이 됩니다! 🎯