반응형
레퍼런스를 리턴하는 함수의 정의
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | int &increment(int &val) { val++; return val; } int main(void) { int n = 10; int &ref=increment(n); cout<<"n : "<<n<<endl; cout<<"ref : "<<ref<<endl; return 0; } // n == val == ref // 그러나 increment함수가 종료되면 val참조는 사라진다. // 결국 n == ref만 남는다. | Crocus |
**중요**
int &increment에서 &가 없다면?
int형으로 리턴중인데
int &ref = 11 이라는 결과가 나오게 된다.
여기서 오류가 나는것은 상수는 참조(&ref)할 수 없다는 것이다.
따라서 &를 붙이거나 아니면 &increment의 &와 int &ref에서 &를 없애면
작동이 제대로 될 것이다.
****제대로 이해하고 넘어가기****
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | int &function(void) { int val= 10; return val; } int main(void) { int &ref=function(); cout<<ref<<endl; return 0; } | Crocus |
// 이 소스의 잘못된 점은
// 정상적인것 같아 보이나 함수호출 뒤 return val을 해 주지만
// 이미 val = 10; 이라는 값이 사라지기 때문에
// int &ref = function();으로 돌아올 때 값을 받지 못하게 된다.
// 출력이 제대로 되는 코딩이어도 문제가 되는 코딩이다.
반응형
'Basic > C++' 카테고리의 다른 글
클래스에 들어가기전, 구조체의 필요성 (0) | 2015.10.06 |
---|---|
new와 delete 연산자의 기본적 기능 (0) | 2015.10.06 |
레퍼런스 함수 (포인터와 참조의 비교) (0) | 2015.10.03 |
레퍼런스의 이해 (0) | 2015.10.03 |
자료형 bool의 기본 설명 (0) | 2015.03.15 |