[완료] Ivor Horton 의 "beginning ANSI c++" 예제 중에서 이해가...

0
points

Ivor Horton 의 "beginning ANSI c++" 제 3 판의 예제인데
잘 안되는 군요.

다음 예제는 이 책(번역본, 에이콘출판사)의 p.354 내용입니다.
아래 코드와 같이 레퍼런스타입 매개변수에 const 를 부가하면 상수를 인수로 받을수
있다고 설명하고 있군요. 그러나 컴파일하면 안됩니다.

저자는 자신있게 된다고 적어놨는데...
이 사람 믿어도 될까 싶네요.

#include <iostream>
using std::cin;
using std::cout;
using std::endl;

int larger(int& m, int& n);

int main() {
int value1 = 10;
int value2 = 20;

cout << endl << larger(value1, value2) << endl;
cout << endl << larger(value1, 15) << endl; // 요부분.
return 0;
}

int larger(const int& m, const int& n) { // 요부분.
return m > n ? m : n;
}

임수서룬뫼의 이미지
37217
points

이 경우 컴파일러가

0
points

이 경우 컴파일러가 알아서 임시 변수를 만들어줘야 하는데 컴파일러 탓을 해보세요.
-> 수정: 그렇게 돼있었군요. 이 경우 컴파일러가 처음에 int &로 인식하여 임시 변수를 만들지 않은 것 같은데,
const int &로 실제 돼있을 때 아무 말도 안 했군요. const는 상관 없다는 규정이 표준에 있나요?

primewizard의 이미지
2628
points

함수 선언에서...

0
points

함수 선언에서

이것을
int larger(int& m, int& n);

이렇게
int larger(const int& m, const int& n);

고맙습니다. primewizard 님.

0
points

제 실수였네요. 가르쳐주셔서 감사합니다.

댓글 보기 옵션

원하시는 댓글 전시 방법을 선택한 다음 "설정 저장"을 누르셔서 적용하십시오.