블로그 이미지
마땅히 정할 이름이 없어, "이름없는"으로 이름을 정한 블로그입니다. 프로그래밍 문서 정리, 팁, 생활 등을 기록하기 위한 용도로 사용 하고 있습니다.
최익필

Recent Comment

Recent Trackback

Archive

calendar

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
  • 232,253total
  • 35today
  • 186yesterday

Category

'값에 의한 전달' 이란 무엇을 뜻하는 것일까?
함수에 전달되는 인자를 복사하여 전달되는 방식

'상수객체 참조자에 의한 전달'이란 무엇을 뜻하는 것일까?
포인터나 레퍼런스 즉 * 나 & 로 전달하는 방식을 뜻한다. 상수 이므로 const type * 나 const type& 을 뜻한다.

둘의 차이점이 있다면 무엇일까?
복사 할때 들어가는 비용에 차이가 있다. 값에 의한 전달은 전달되는 인자의 크기가 크면 클 수록 복사 되는 비용이 점점 많이 지불해야 할것이다. 하지만 상수객체 참조자는 주소값인 4Byte(64bit 환경에선 8Byte)의 비용만 지불하면 되기 때문에 그 비용은 일정하다.

또한 참조에 의한 전달 방식은 슬라이싱 문제(복사 손실 : Slicing problem)가 없어진다.

그렇다면 무엇이 더 좋은가?
상수 객체 참조자에 의한 전달 방식이 무조건 좋다는것이 아니다. 전달 인자가 기본자료형, STL 반복자, 함수 객체 타입 일때는 오히려 상수 객체 참조자가 더 위험하거나, 쓸수 없을 때도 있다.

대부분의 경우 위의 3가지 경우가 아니라면, 상수 객체 참조자에 의한 전달 방식을 쓰는게 대개 낫다.



이것만은 잊지 말자!
1. 대개 상수 객체 참조자에 의한 전달이 될수 있다면 쓰자!
2. 기본제공 타입, STL 반복자, 함수 객체 타입은 값에 의한 전달을 쓰자!


관령 링크
http://redinlife.egloos.com/1624588
http://kslive.tistory.com/11
http://skql.tistory.com/515
http://www.web-reader.co.kr/C/c%2B%2B-edu18.htm
http://www.xevious7.com/278
http://occamsrazr.net/tt/166
http://ikpil.tistory.com/313
posted by 게임 프로그래머라 불릴 최익필

Trackback http://ikpil.com/trackback/440 관련글 쓰기

댓글을 달아 주세요