인프런 커뮤니티 질문&답변
call by reference 관련 질문입니다
해결된 질문
작성
·
138
0
9분 09초 쯤에 getSinCos(double degrees , double &sin_out, double &cos_out) 함수에서
double degrees 부분을 const double °rees로 바꾸셨는데요
궁금한것은 main함수 안에서 getSinCos(..)안의 argment중 degrees부분에 바로 상수를 넣어준다면(ex : getSinCos(30, ...)
double degrees에서 const double& degrees로 바꾸지 않아도 효율?의 차이는 별로 없지 않을까 생각되는데 제 생각이 맞을까요?
아니면 degrees를 상수로 넣어준다고 해도 그것에 의해 메모리가 할당되면서 좀 더 효율이 안좋아지나요?
답변 1
2
경우에 따라 다를 것 같습니다.
저 getSinCos 함수를 낮은 빈도수로 호출할 것이라면 차이가 그리 나진 않겠죠?
근데 getSinCos 함수를 엄청 많이 호출할거라면..(예를 들면 엄청난 크기의 반복문 안에서 매번 호출시킨다면)
그만큼 '값'에 의한 인수 전달에 의해 복사 과정도 매번 일어난다는 것이니 이땐 좀 효율성 차이가 있을 것 같네요.
또한 파라미터가 int, double 같은 일반 변수가 아니라 vector 같은 컨테이너라면 입력 크기가 크니 이땐 참조에 의한 인수 전달을 하는 것이 좀 더 효율적이지 않을까 싶습니다.
효율의 차이는 파라미터의 크기나 함수 호출 빈도수 같은 그런 경우에 따라 다를 것 같아요!






자세한 답변 감사드립니다