저는 C++을 배우기 시작했습니다. 자바 환경에서 전환했습니다. 저를 혼란스럽게 두 가지가 있습니다const 키워드 및 중복 메소드 서명
const char* data() const
{
return data_;
}
char* data()
{
return data_;
}
: 일부 부스트 예제를 통해 읽을 때
나는 클래스에 정의 된 다음 두 가지 방법을 발견했다.먼저 내가 여기에 이해 생각 예약어 const
이다. 첫 번째 const
은 char*
을 가리키며 포인터의 값을 변경할 수 없습니다. 두 번째 const
은 함수 호출은 내가 호출하는 객체의 상태를 변경하지 않는다고 알려줍니다. 그게 정확한 해석입니까? 하나는 같은 이름과 서명이 두 가지 방법이 왜 혼란의
두 번째 지점입니다. 컴파일러는 어떤 함수를 호출 할 것인지 어떻게 알 수 있습니까? data()
에 전화 한 후 데이터를 변경할 수 있는지 여부를 알지 못하면 어떻게 알 수 있습니까?
당신은'const char *'와'char * const'을 혼동합니다. –
후행하는'const'는 과부하 해결에 사용됩니다. 두 가지가 필요합니다. 첫 번째 만 가지고 있다면? 'data_'는 수정할 수 없습니다. 만약 당신이 두 번째 만 가지고 있다면? 당신은 const 객체에서 호출 할 수 없습니다. – chris
@KerrekSB ouch .. C++에서 단어를 신중하게 선택해야하며, 내가 사용하는 순서도주의 깊게 선택해야합니다. 나는 이미이 언어를 좋아하기 시작한다. – DeltaLima