Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>
포인터가 문제이다

10. 포인터가 문제이다

포인터는 일반적인 프로그램에서 꼭 필요한 것은 아니다. Java와 같은 현대 언어에서는 포인터가 없다 (Java는 내부적으로만 포인터를 사용한다). 포인터는 프로그램을 어지럽고 읽기 힘들게 만든다.

최대한 포인터의 사용을 피하고, 대신 레퍼런스를 사용해라. 포인터는 정말 문제가 많고, 포인터 없이 프로그램을 쓰는 게 가능하다. 포인터는 레퍼런스를 쓸 수 없는 곳에서만 써야한다.

레퍼런스 는 별칭(alias)이다. 레퍼런스를 만들면, 이는 다른 객체(혹은 대상)에 다른 이름을 주는 것이다. 그 순간부터 레퍼런스는 대상의 다른 이름으로서 돌아가고, 레퍼런스에 행하는 모든 연산이 그 대상에 실제로 적용된다.

레퍼런스의 문법 : 타입을 선언할 때, 뒤에 레퍼런스 연산자 (&) 를 붙임으로써 레퍼런스를 선언할 수 있다. 레퍼런스는 반드시 만들어 질 때 초기화 되어야 한다. 다음의 예를 보자 -

	int	weight;
	int	& rweight = weight;

	DOG	aa;
	DOG	& rDogRef = aa;

레퍼런스를 사용할 때 지킬 것 -

  • 객체에 대한 다른 이름을 주고자 할 때 레퍼런스를 사용해라.

  • 모든 레퍼런스는 초기화되어야 한다.

  • 프로그램의 높은 효율과 퍼포먼스를 위해 레퍼런스를 사용해라

  • 레퍼런스와 포인터를 보호하기 위해 가능한경우면 언제나 const를 사용해라.

레퍼런스를 사용할 때 하지 말아야 할 것 -

  • 중요 : NULL인 객체에 대해 레퍼런스를 쓰지 말아라.

  • 포인터의 주소를 나타내는 &와 레퍼런스 연산자를 헷갈리지 마라. 레퍼런스 연산자는 오직 선언부 (위에 나와있는 레퍼런스 사용법 참조) 에서만 쓰인다.

  • 레퍼런스에 새로 값을 지정하려(즉, 변경하려) 하지 마라.

  • 레퍼런스를 쓸 수 있다면 포인터를 쓰지 마라.

  • 지역변수에 대한 레퍼런스를 리턴하지 마라.

  • 레퍼런스가 스코프가 벗어난 변수를 가리키도록 하지 마라.