값 전달 및 R값 참조 전달
함수 매개변수에 대한 값 전달 또는 rvalue 참조 전달 중에서 결정하는 것은 여러 요인에 따라 달라집니다.
값별 전달
-
(Widget w)
- 복사본 생성 입력 매개변수는 원본을 변경하지 않고 그대로 둡니다.
- 암시적 복사 작업이 포함되어 크거나 복잡한 개체에 비효율적일 수 있습니다.
- 매개변수를 수정하지 않더라도 매개변수의 소유권을 가정합니다. .
Rvalue 참조 전달
-
(Widget&& w)
- rvalue(예: 만료되는 임시 객체)로 매개변수를 강제로 초기화하여 복사 작업을 방지합니다.
- 호출자가 복사본을 원할 경우 std::move를 사용하여 명시적인 복사본 선언이 필요합니다. .
- 발신자의 복사본에 반영되는 반환 값의 변경 사항을 비활성화합니다.
주요 차이점
-
소유권 복사: 값에 의한 전달은 매개변수를 복사해야 하는 반면, rvalue 참조에 의한 전달은 함수가 매개변수를 이동하도록 허용하여 경우에 따라 추가 이동 생성자 호출을 제거합니다.
-
인터페이스 의미: Rvalue 참조는 함수가 값의 소유권을 가지려고 하며 해당 값의 지속적인 존재에 대해 책임을 지지 않음을 나타냅니다.
-
효율성: rvalue로 전달 호출자가 입력 객체의 복사본을 필요로 하지 않는 경우 참조가 더 효율적일 수 있습니다.
올바른 방법 선택
다음과 같은 경우 값으로 전달을 사용하세요. :
- 이 함수에는 입력 개체의 복사 또는 수정된 버전이 필요합니다.
- 입력 개체가 작거나 복사 비용이 저렴합니다.
패스 사용 rvalue 참조 기준:
- 함수가 소유권을 가져와 입력 객체를 수정해야 하는 경우.
- 입력 객체가 크거나 복사하는 데 비용이 많이 듭니다.
- 호출자 입력 개체의 복사본이 필요하지 않습니다.
위 내용은 C에서 값에 의한 전달과 R값 참조에 의한 전달을 언제 선택해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!