Call By Value / Address / Reference는 무엇인가?
CallByValue : 값에 의한 전달
CallByAddress : 주소에 의한 전달
CallByReference : 참조에 의한 전달
함수가 호출 될 대 매개변수에 인자를 어떤 방식으로 넣어줄건지에 대한 개념이다.
Call By Value
#include <iostream>
using namespace std;
void CallByValue(int value)
{
value = 1;
}
int main()
{
int num = 0;
CallByValue(num);
cout << num << endl;
return 0;
}
// 0값 출력
Call By Address
#include <iostream>
using namespace std;
void CallByAddress(int* address)
{
*address = 1;
}
int main()
{
int num = 0;
CallByAddress(&num);
cout << num << endl;
return 0;
}
// 1값 출력
Call By Reference
#include <iostream>
using namespace std;
void CallByReference(int& reference)
{
reference = 1;
}
int main()
{
int num = 0;
CallByReference(num);
cout << num << endl;
return 0;
}
// 1값 출력
결과적으로 보면 주소와 참조에 의한 전달만이 변수의 값이 바뀌는것을 확인할 수 있다.
실제 매개변수의 값이 다른 함수에 의해 방해받는 것을 원하지 않을 경우에는 값에 의한 전달을 하고
원하는 경우에는 주소와 참조에 의한 전달을 하는 방식을 택해야겠다.
'Game Programming > 자문자답' 카테고리의 다른 글
가비지 컬렉터와 스마트 포인터란 무엇인가? (2) | 2022.09.13 |
---|---|
캐릭터 구현 시 상속을 통해서만 구현해야하는가? (0) | 2022.09.12 |
가상함수란 무엇인가? (0) | 2022.09.11 |
지역, 전역, 동적 할당 변수란 무엇인가? (0) | 2022.09.11 |
게임 프로그래밍에서 C++이 사용되는 이유는? (2) | 2022.09.11 |