[질문]C++에서 레퍼런스와 포인터를 같이 사용하면않되나요?
리나
집에서 공부하면서 지내려고하니깐 생활비도쪼달리고 눈치도보이고 해서 요즘 알바하고 지냅니다.ㅡㅡ; 주야간이 1주일씩 뒤바껴서 공부가 제대로안되서 답답하지만 잠자야할시간 쪼게서 보구있는데.. 갑자기 엇~ 라고 생각되는 코드가 보여서 질문드립니다.
정확하게 기억은 나지않는데 왜인지 제머리속에는 이런문장이 떠오르더군요 레퍼런스와 포인터를 같이 사용하지말라구요..
레퍼런스는 별명을 붙여주는거고 포인터는 다른변수로 포인터가 가르키는 변수혹은 함수등등을 컨트롤할수있다라고 생각하는데요
레퍼런스로 해당변수에 별명을 지어줘서 사용하는거니깐 포인터가 가르키는 변수에레퍼런스를 할당하면 오류없이 사용할수있을꺼라생각이 들더군요..
갑자기 이런생각이 들은 이유는
c++ 공부중에 객체의 맴버는 this 포인터를 사용할수있는데..
point& point::operator++()
{
x++;
y++;
return *this;
}
첨에 이문장을 봤을때 뭐지 레퍼런스로 전달하려면 this가 아닌가 생각햇는데 이 this가 포인터이므로 포인터가 가르키는 메모리공간을 리턴해줘야 레퍼런스가 별명을 붙여줄수있구나 라고 생각했습니다.
위문장을 보면 포인터와 레퍼런스를 같이 사용하더라구요
결국 제생각이 틀렸을수도있지만 포인터와 레퍼런스는 같이사용해도되는건가요?
-
봄바람
단지 this 를 넘기는것이라면.. pointer이기 때문에 & 로는 바로 되지 않을것같습니다. ^_^
하지만 *this 를 넘긴다면.. 지금 가리키고 있는것을 말하기 때문에 그것을 & 로 바꿀수 있지 않을까요? ㅎㅎ
ㅎㅎ 아님 말구요~ ^_^;;; ㅎㅎ -
남
으흠 앞에 point& 로 되어 있으니 리퍼런스란 말씀이군요. 깊게 생각해 보지 못했었는데 리턴형에 붙는 &는 저도 참 궁금했습니다.
하여간 두가지는 밀접한 관련이 있지요.
CPoint * ppoint;
....
CPoint & cpoint = *ppoint;
cpoint.x = ...
저는 이런식으로는 여러번 사용했네요.