call by value
값에 의한 전달을 하면 argument가 별도의 함수 지역변수로 복사된다. 함수의 지역변수는 함수 스코프 내에서만 유효하며 함수 스코프를 벗어나는 순간 stack 메모리를 반환한다. 아래는 간단한 call by value의 예제다. primitive 타입의 경우 복사 자체의 오버헤드가 크지 않지만 구조체나 배열과 같은 경우 복사 지역변수로 복사하는 과정 자체가 오버헤드가 클 수 있기 때문에 주로 call by reference를 사용한다.
void doSome(int y)
{
cout << "In func " << y << " " << &y << endl;
}
int main()
{
int x = 6;
cout << "In main " << x << " " << &x << endl;
// 이하 argument들은 모두 call by value다.
doSome(5);
doSome(x);
doSome(x + 1);
return 0;
}

'C++ 학습' 카테고리의 다른 글
| [C++] call by reference (0) | 2023.11.24 |
|---|---|
| [C++] std::vector (0) | 2023.11.24 |
| [C++] std::array (0) | 2023.11.24 |
| [C++] 다중 포인터 (0) | 2023.11.23 |
| [C++] void pointer (0) | 2023.11.23 |