레퍼런스
노랑이
#include Turboc.hclass pp{ int Value;public: pp(){} pp(int aValue): Value(aValue){}
pp & operator ++(){ this-Value++; return *this; } void OutValue(){ printf(%d\n,Value); } void modify(){ Value=5; }
};
void main(){ pp a(6); pp b; b = ++a; // =a.operator ++(); a.modify(); a.OutValue(); b.OutValue();
int i=5; int &ri=i; ri++; printf(%d,i);
system(pause);
}
네 보기에도 잘 작동하게 생겼습니당
그런데 여기에서 궁금한건 연산자 오버로딩 함수인데요
연산자 오버로딩 함수를 b=++a란곳에서 호출을 했습니다
연산자 오버로딩 함수는 레퍼런스를 리턴하는데
b는 레퍼런스변수가 아닌데도 컴파일러는 에러로 처리하지 않는군요
왜이러는건가요?
-
뿡뿡
Aㅏ! 조흔 예군요!
-
갤쓰리
int a = 123;
int& b = a;
int c = b + 1;
이게 가능하니깐요. -
꿈
그렇군요
-
돋되다
네 그렇죠 ㅋ
-
딥보라
결론은 레퍼런스를 리턴하는 함수가 리턴하는 레퍼런스값을 일반변수도 받을 수 있는건가요?
-
수예
저건 반환값이 레퍼런스라는 뜻입니다.
그래서 b = ++a 에서
b 에 받는 값이 a를 증가시킨값의 레퍼런스인데
레퍼런스에서 일반변수로 값을 넣는것은 가능하기 때문에
결론은 가능해요.