"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 값별 전달 및 R값별 전달 참조 이해: 주요 차이점 및 의미

값별 전달 및 R값별 전달 참조 이해: 주요 차이점 및 의미

2024년 10월 31일에 게시됨
검색:521

Understanding Pass-by-Value and Pass-by-Rvalue Reference: Key Differences and Implications

함수 매개변수의 값별 전달과 R값별 전달 참조

a의 인수를 취하는 함수를 정의하는 경우 특정 유형에는 값별 전달 또는 r값별 참조라는 두 가지 기본 옵션이 있습니다. 값별 전달은 인수의 복사본을 생성하는 반면, r값별 전달 참조는 인수에 대한 rvalue(임시) 참조를 사용하여 함수로 이동할 수 있도록 합니다.

주요 차이점

복사와 이동의 주요 차이점 외에도 고려해야 할 몇 가지 주요 차이점이 있습니다.

  • 소유권 제어: 값별 전달 함수가 인수의 소유권을 가져오고 효과적으로 호출자로부터 함수로 제어를 전달한다고 가정합니다. 반면에 rvalue별 전달 참조는 호출자에게 소유권을 남깁니다.
  • 복사 명시성: 값별 전달은 내부적으로 복사 비용을 숨깁니다. Pass-by-rvalue 참조는 호출자가 std::move를 사용하여 명시적으로 복사해야 하므로 개발자는 자신의 의도를 명시적으로 나타내야 합니다.
  • 잠재적인 복사/이동을 제거합니다: Pass-by-rvalue 참조를 사용하면 특정 경우 단일 이동 생성자 호출이 필요하지 않습니다. 그러나 값별 전달 및 r값별 전달 참조를 사용하면 컴파일러에서 복사/이동을 제거할 수 있습니다.

인터페이스 의미

패스 간 선택 값별 및 r값별 전달 참조는 함수 인터페이스에 영향을 미칩니다.

  • 값별 전달:

    • 함수가 인수의 소유권을 가져옴을 나타냅니다.
    • 호출자의 인수 수명 관리 부담을 덜어줍니다.
  • rvalue별 전달 참조:

    • 호출자가 인수 제어를 포기한다는 신호를 보냅니다.
    • 호출자와 함수 간의 소유권을 명확하게 분리합니다.

효율성 고려 사항

값별 전달 참조와 r값별 전달 참조 간의 효율성 차이는 인수 유형의 의미에 따라 다릅니다.

  • 대형 데이터 구조: 인수 유형에 저렴하게 이동할 수 있는 대규모 데이터 구조가 포함된 경우 r값별 전달 참조는 효율성을 크게 향상시킬 수 있습니다. 이렇게 하면 비용이 많이 드는 복사본을 만드는 것을 방지할 수 있습니다.
  • 작은 데이터 구조: 최소한의 내용이 포함된 작은 데이터 구조의 경우 값별 전달과 r값별 전달 참조 간의 효율성 차이가 최소화됩니다.
릴리스 선언문 이 글은 1729689829에서 재인쇄되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3