인프런 커뮤니티 질문&답변
const 함수에 대한 질문있습니다
작성
·
209
0
항상 교수님 덕분에 재미있게 공부하고 있는 학생입니다.
다름이 아니라
동영상 14분 30초 즈음에
const string& GetVal() const;
string& GetVal();
Something s1;
const Something s2;
가 있을때 s2의 getval 함수는 당연히 s2가 상수이므로
멤버변수들의 변경이 안되므로 const string& GetVal() const를 반환하는 것까지는 이해가 되었습니다.
근데 s1의 GetVal()을 선택하는 과정에서
s1은 상수가 아니지만
const string& GetVal() const로 받아서
멤버변수들의 값을 변경하지 않는것도 가능한데
왜 컴파일러는 모호성 오류 반환 대신에 2번째 nonConst함수를 선택하는건지 궁금합니다!!
항상 감사합니다 ♡(ŐωŐ人)
답변 1
1
홍정모
지식공유자
컴파일러는 표준을 최대한 지키면서 컴파일러를 만드시는 분들이 스스로 최선이라고 생각하는 방식으로 만들게 됩니다. 나중에 다른 언어에서도 이렇게 애매한 문법을 종종 보시게 될겁니다. 추가로 컴파일러 옵션에 warning level이나 warning을 error 처리할지 등을 직접 결정할 수도 있고 운영체제와 컴파일러 종류에 따라서 같은 코드가 컴파일 되다 안되다 하는 경우도 보시게 될겁니다.





