인프런 커뮤니티 질문&답변

JK Cho님의 프로필 이미지
JK Cho

작성한 질문수

홍정모의 따라하며 배우는 C++

8.9 클래스와 const

const의 위치에 대해 질문이 있습니다!

작성

·

675

3

클래스 내의 멤버 함수에서

(1). const int getValue() { return this->m_var; }랑

(2). int getValue() const { return this->m_var; }는

의미/문법상 어떤 차이가 있나요?


메인 함수 내에서 const Something something;으로 클래스 객체를 만들었을 때,

(1)은 something.getValue()호출은 에러가 뜨고

(2)는 something.getValue()호출이 가능합니다.


(1)의 경우 E1086 - the object has type qualifiers that are not compatible with the member function "Something::getValue"라는 오류가 발생해서 생성된 객체에서 'const'를 빼보았더니 오류문이 사라졌습니다.

 

(1), (2) 둘 다 const가 들어가니 '값을 바꾸지 않는 함수다' 라는 같은 뜻인 줄 알았는데 어떤 차이가 있는지 궁금합니다! 감사합니다!

답변 2

2

홍정모님의 프로필 이미지
홍정모
지식공유자

(1)은 반환값이 const이고 (2)는 멤버함수 내부에서 멤버 변수의 값을 바꾸지 못합니다.

(1)은 보통 const int & getValue(){...} 같이 참조를 반환할 때 더 많이 사용합니다.

그 아래 부분은 코드 전체가 없어서 어떤 오류인지 잘 모르겠네요. 위에 설명해드린 내용에 맞춰서 다시 생각해보시면 이해하실 수 있을겁니다.

0

(1)은 반환값이 const이기 때문에 값 자체로 사용할 때 사용하고 

(2)는 const 함수로, 함수 내에서 멤버변수를 변화시키지 않는다는 의미에요.

JK Cho님의 프로필 이미지
JK Cho

작성한 질문수

질문하기