int *pINT = NULL;
int &refINT = *pINT;
refINT = 100; //꽥!!
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
int *pINT = NULL;
int &refINT = *pINT;
refINT = 100; //꽥!!
참조형의 유효성과 관련해서 자주 나오는 예지요. 저는 이것을 반례로 생각하지 않습니다.
널 포인터를 역참조하는 것부터 잘못 되었으니 refINT의 초기화도 제대로 될 리가 없고,
따라서 "꽥!!"은 두번째 줄에 위치해야 하는 것이죠. 참조형의 초기화는 대상 개체가
유효한 경우에만 가능합니다.
널 포인터를 역참조하는 것부터 잘못 되었으니 refINT의 초기화도 제대로 될 리가 없고,
초기화는 제대로 될리 없지만 그 정상적이지 않는 초기화가 컴파일 타임에 문제를 일으키지 않고 정상적으로 컴파일이 되는게 문제같습니다 :)
ps. 혹시나해서 미리 말씀드리지만 꽥!!하고 오리님하고는 전혀 관계가 없습니다 !! 8)
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
원리는 비슷합니다만...1. reference는 pointer보다
원리는 비슷합니다만...
1. reference는 pointer보다 사용하기가 편합니다.
2. reference는 생성과 동시에 초기화되어야 하며, 포인터처럼 값을 변경할수 없습니다.
3. C에서는 reference를 지원하지 않는 것으로 알고 있습니다.
4. 음... 또...? ^^;;
----------------------------------------------
한번뿐인 인생....
미친듯이 살아보자!
----------------------------------------------
이어받아서... ^^;4. null pointer는 있지만 nul
이어받아서... ^^;
4. null pointer는 있지만 null reference라는 것은 없죠. 즉 포인터는 null pointer에
의해 유효한 개체를 가리키지 않는다는 것을 나타낼 수 있는 반면, 참조형은 반드시
유효한 개체를 참조한다는 뜻을 갖고 있습니다.
참고로 C++에 포인터와 참조형이 같이 존재하는 이유는
Why does C++ have both pointers and references?
[quote="doldori"]이어받아서... ^^;4. null
레퍼런스가 반드시 유효한 객체를 가르키지는 않습니다. 아래와 같은 코드에서 그렇습니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
[quote="chadr"]레퍼런스가 반드시 유효한 객체를 가르키지는 않
참조형의 유효성과 관련해서 자주 나오는 예지요. 저는 이것을 반례로 생각하지 않습니다.
널 포인터를 역참조하는 것부터 잘못 되었으니 refINT의 초기화도 제대로 될 리가 없고,
따라서 "꽥!!"은 두번째 줄에 위치해야 하는 것이죠. 참조형의 초기화는 대상 개체가
유효한 경우에만 가능합니다.
아, 이런 경우도 있겠군요.
이것도 반례라고 생각하신다면 저는 gg입니다. ^^;
간단답변
reference는 그냥 alias라고 보시면 됩니다.
같은 메모리 영역을 a라는 변수이름으로도 참조하고 b라는 변수이름으로도 참조할 수 있죠.
[quote="doldori"]널 포인터를 역참조하는 것부터 잘못 되었으
초기화는 제대로 될리 없지만 그 정상적이지 않는 초기화가 컴파일 타임에 문제를 일으키지 않고 정상적으로 컴파일이 되는게 문제같습니다 :)
ps. 혹시나해서 미리 말씀드리지만 꽥!!하고 오리님하고는 전혀 관계가 없습니다 !! 8)
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
댓글 달기