Call by value
double median(vector<double> vec)
매개변수인 vec의 값을 복사해서 가져온다.
함수 안에서 vec을 변경해도 실제 vec은 변하지 않는다.
Call by reference
vector<double> homework;
vector<double>& hw = homework; // hw is a synonym for homework
double grade(double midterm, double final, const vector<double>& hw)
const vector<double>& hw는 homework의 또 다른 이름이 된다.
그래서 hw에 하는 행동들은 homework에게 동일하게 적용된다. 그 반대도 마찬가지다.
const 키워드는 매개변수를 수정할 의도가 없을 경우 붙이고 수정할 의도가 있을 경우 뺀다.
+23.01.18 추가
https://rehtorb-algorithm.tistory.com/11
[C++] call by value, call by address, call by reference 차이
함수가 호출될 때 매개변수에 인자를 어떤 방식으로 넣어줄건지에 대한 개념이죠. call by value : 값에 의한 전달call by address : 주소에 의한 전달call by reference : 참조에 의한 전달 1. call by value 더보
rehtorb-algorithm.tistory.com
이것에 대해 잘 적혀있는 블로그 링크가 있어서 가져왔다.
결론은 call by value, call by address는 대상의 값을 복사해서 전달하는 방식이고
call by reference는 대상을 직접 전달하는 방식이다.
effective C++에 의하면 값을 복사해서 전달하는 방식은 큰 비용이 발생하고 복사 손실이 발생할 수 있기 때문에
값에 의한 전달은 기본 제공 타입, STL 반복자, 함수 객체에만 사용하는 것이 좋다고 한다.
'C++' 카테고리의 다른 글
| [C++] iterator (0) | 2021.12.19 |
|---|---|
| [C++] 헤더파일 (0) | 2021.12.18 |
| [C++] typedef (0) | 2021.12.17 |
| [C++] cin >> x는 cin을 반환한다 (0) | 2021.12.17 |
| [C++] type 지정하기 (0) | 2021.12.17 |