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

wlsdnr929님의 프로필 이미지
wlsdnr929

작성한 질문수

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

9.8 형변환을 오버로딩 하기

printInt 함수에서

작성

·

308

1

밑줄 친 부분에서 "const" 가 없으면 오류 창에

" int& 형식(const 한정 형식아님)의 참조를 "Cents"형식의 값으로 초기화할 수 없습니다."

라고 뜨는데, 왜 그런걸까요??

강의에서 다룬 적이 있는 것 같아서 처음부터 다시 찾아봤는데, 

발견을 하지 못하여 질문드립니다.

답변 2

3

<참조와 const> 강의를 복습해보시면 될 것 같습니다.

함수의 리턴값은 R-value 임을 알고 계실겁니다. cents 가 int 로 형변환 되야하기 때문에 형변환 연산자 오버로딩을 호출하게 되는데 형변환 연자 오버로딩은 m_nets 를 리턴합니다. 이 리턴값을 printint 함수의 매개변수인 value 가 참조해야 하는데 int & 이런 일반적인 참조 변수는 R-value 를 참조하지 못합니다. 반면 const int & 이런 const 참조 변수는 R-value, L-value 둘 다 참조가 가능하기 때문에 문제가 없었던 것입니다.

0

wlsdnr929님의 프로필 이미지
wlsdnr929
질문자

완전히 이해가 되었습니다. 말씀해주신 강의 다시 한번 보겠습니다.

감사합니다~~!!

wlsdnr929님의 프로필 이미지
wlsdnr929

작성한 질문수

질문하기