객체를 함수에 전달하는 네 가지 방법이 있습니다. X 클래스가 있고 fun 함수에 전달하려고 한다고 가정해 보겠습니다. 그런 다음
값으로 전달
이렇게 하면 함수 범위에 개체의 얕은 로컬 복사본이 생성됩니다. 여기에서 수정한 사항은 전달된 객체에 반영되지 않습니다. 예를 들어,
선언
void fun(X x);
통화
X x; fun(x);
참조로 전달
이것은 객체에 대한 참조를 함수에 전달합니다. 여기에서 수정한 사항은 전달된 객체에 반영됩니다. 개체의 복사본이 생성되지 않습니다. 예를 들어,
선언
void fun(X &x);
통화
X x; fun(x);
const 참조로 전달
이것은 객체에 대한 const 참조를 함수에 전달합니다. 여기에서 개체를 직접 수정/재할당할 수 없습니다(그렇지만 해당 메서드를 사용할 수 있음). 이것은 함수가 객체의 읽기 전용 복사본만 갖도록 하려는 경우에 유용합니다. 개체의 복사본이 생성되지 않습니다. 예를 들어,
선언
void fun(X const *x);
통화
X x; fun(&x);
const 포인터로 전달
이것은 객체에 대한 const 포인터를 함수에 전달합니다. 여기에서 포인터를 수정/재할당할 수 없습니다. 이것은 함수가 포인터에 이 객체의 주소만 갖도록 하려는 경우에 유용합니다. 개체의 복사본이 생성되지 않습니다. 예를 들어,
선언
void fun(X *x);
통화
X x; fun(&x);
포인터로 전달
이것은 객체에 대한 포인터를 함수에 전달합니다. 이는 개체에 대한 참조를 전달하는 것과 유사합니다. 개체의 복사본이 생성되지 않습니다. 예를 들어,
선언
<void fun(X *x);>
통화
X x; fun(&x);