시작하기 위해 아마도 const
객체의 데이터 또는 포인터를 수정할 수 없거나 두 가지 모두로 만드는 데 사용될 수 있음을 알고있을 것입니다 .
const Object* obj; // can't change data
Object* const obj; // can't change pointer
const Object* const obj; // can't change data or pointer
그러나 다음 구문을 사용할 수도 있습니다.
Object const *obj; // same as const Object* obj;
중요한 것은 별표에서 const
키워드 를 넣는 부분입니다 . 개인적으로 const
유형의 왼쪽에 데이터를 수정할 수 없음을 지정하는 것이 좋습니다. 왼쪽에서 오른쪽으로의 사고 방식에서 더 잘 읽히지 만 어떤 구문이 먼저 나왔습니까?
더 중요한 것은 왜 const
데이터 를 지정하는 두 가지 올바른 방법이 있으며 어떤 상황에서 어떤 상황에서 하나를 선호하거나 필요합니까?
편집하다:
그래서 컴파일러가 물건을 해석하는 방법에 대한 표준이 내가 태어나 기 오래 전에 작성되었을 때 이것은 임의의 결정이었습니다. 이후 const
나는 그들이 추가에 전혀 해를 끼치 없었다 생각 추측 (기본적으로?) 키워드의 왼쪽에 무엇에 적용된다 "바로 가기" 선언에 의해 변경 등의 시간까지 적어도 다른 방법으로 키워드를 입력 한정자를 적용하는가 * 또는 & 구문 분석
이것은 C의 경우에도 마찬가지였습니다.
const
한 후 예, 유형#define MAKE_CONST(T) T const
대신#define MAKE_CONST(T) const T
그 때문에MAKE_CONST(int *)
제대로으로 확장됩니다int * const
대신const int *
.