23.08.16 00:26 작성
·
237
1
안녕하세요 수업을 들으면서 코드를 작성하던중 다음과 같은 오류가 나타나서 여쭈어봅니다.
const 를 지우고 하면 문제없이 실행이 되는데 왜 이러는건가요 ?
답변 2
1
1
안녕하세요, 답변 도우미 Soobak 입니다.
동일한 내용의 질문 링크를 첨부드립니다.
질문 - 6:36 void registerStudent(const Student & const student_input)error (링크)
요약하자면, 질문해주신 const Student & const student_input
에서,
첫 번째 const
는 참조되는 'Student
객체' 에 대해 적용됩니다.
두 번째 const
는 참조 자체에 대해 상수성을 나타내려고 하지만, 참조는 이미 상수성을 가지고 있으므로 두 번째 const
의 의미는 적습니다. (첨부해주신 에러의 내용도 이러한 오류를 지적하고 있습니다.
하지만, 개별 컴파일러와 환경에 따라서 에러 검증의 수준이 다르기 때문에, 검증 수준과 컴파일러와 환경에 따라서 에러를 출력할 수도, 그렇지 않을 수도 있습니다.
따라서, 환경 간의 차이 때문에 발생한 문제라고 생각하시는 것이 적절할 것 같습니다.
두 번째 const
의 필요성이 적은 것은 맞습니다.
만약, 에러를 출력하지 않는다면 두 번째 const
키워드는 컴파일러가 자동으로 무시하게 되기 때문이라고 합니다.
하지만 그 동안 선생님께서 강의에서 강조해주셨던 것 처럼, const
키워드는 프로그래머의 실수 방지에 아주 큰 도움이 되므로, const
키워드를 사용할 수 있는 경우에는 되도록 사용하는 것이 좋습니다.
위 내용들을 바탕으로, 상황과 환경에 맞게 선택하는 것이 좋은 것으로 이해하시는 것이 적절할 것 같습니다.