객체를 함수에 전달하는 네 가지 방법이 있습니다. 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 const *x);
전화 걸기
X x; fun(&x);
const 포인터로 전달
이것은 객체에 대한 포인터를 함수에 전달합니다. 이는 개체에 대한 참조를 전달하는 것과 유사합니다. 개체의 복사본이 생성되지 않습니다. 예를 들어,
선언
void fun(X *x);
전화 걸기
X x; fun(&x);