-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
const의 위치에 대해 질문이 있습니다!
19.06.24 00:48 작성 조회수 567
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
홍정모
지식공유자2019.06.24
(1)은 반환값이 const이고 (2)는 멤버함수 내부에서 멤버 변수의 값을 바꾸지 못합니다.
(1)은 보통 const int & getValue(){...} 같이 참조를 반환할 때 더 많이 사용합니다.
그 아래 부분은 코드 전체가 없어서 어떤 오류인지 잘 모르겠네요. 위에 설명해드린 내용에 맞춰서 다시 생각해보시면 이해하실 수 있을겁니다.
0
code h
2020.06.17
(1)은 반환값이 const이기 때문에 값 자체로 사용할 때 사용하고
(2)는 const 함수로, 함수 내에서 멤버변수를 변화시키지 않는다는 의미에요.
답변 2