값으로 전달인가, 참조로 전달인가

이상문
2 min readMar 28, 2020

--

프로그램을 하면서, 규칙을 만들어 쓰는 것은 아니지만, 주로 함수 인터페이스를 만들 때, 다음과 같이 하고 있었다.

  1. primitive type은 값으로 그냥 넘긴다.
  2. 변경하지 않을 값이라면 const 참조로 넘긴다.
  3. 변경할 값이라면 그냥 참조로 넘긴다.

이 정도의 생각으로 무의식적으로 함수를 만들어 쓰고 있었는데, 다음 글은 좀 더 이 부분을 정립시키는데 도움이 될 것 같다.

여기에서는 3가지 질문을 이용해서 5가지의 경우로 구체화해 두었다. 우선 질문은 다음과 같다.

  1. 값을 수정할 것인가
  2. 복사하는데 비용이 많이 드는가
  3. 객체의 생명주기를 유지해야 하는가

각각을 Q1, Q2, Q3 라고 했을 때,

Widget은 임의의 클래스명 혹은 타입이라고 생각하면 된다. 스콧 마이어님이 아마 effective C++에서 설명하신 것 같은데, STL의 iterator나 함수 객체에는 값으로 전달하는 것을 권장을 하는 것 같다. 이것은 책을 한번 뒤져서 봐야 할 것 같다.

--

--

이상문
이상문

Written by 이상문

software developer working mainly in field of streaming, using C++, javascript

No responses yet