> 백엔드 개발 > C++ > 본문

C에서 범용 참조와 전달 참조의 차이점은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-17 09:29:03
원래의
971명이 탐색했습니다.

What's the Difference Between Universal References and Forwarding References in C  ?

범용 및 전달 참조: 포괄적인 설명

C에서 프로그래머는 종종 참조를 사용하여 데이터를 함수에 전달합니다. 함수 매개변수를 rvalue 참조(예: void f(int && i))로 정의할 때 함수 인수는 rvalue 참조에 바인딩됩니다. 반대로, T &&로 선언된 템플릿 함수 매개변수는 t는 rvalue 또는 lvalue 참조에 바인딩될 수 있습니다.

이 두 매개변수 유형에 대한 논의가 촉발되었으며 일부에서는 후자를 "범용 참조"로, 다른 일부는 "전달 참조"로 언급했습니다.

범용 참조 vs. 전달 참조

"범용 참조"라는 용어 원래는 Scott Meyers가 cv-unqualified 템플릿 매개변수에 대한 rvalue 참조가 값 또는 lvalue 참조로 추론되는 기능을 설명하기 위해 만들어졌습니다. 그러나 C 17에서는 "전달 참조"라는 새로운 용어를 도입했습니다.

C 표준에 따르면 "전달 참조"는 cv-unqualified 템플릿 매개 변수에 대한 rvalue 참조로 정의됩니다. 함수 인수가 lvalue인 경우 "A에 대한 lvalue 참조" 유형이 유형 추론에 사용됩니다.

따라서 범용 참조와 전달 참조는 동의어이며, 현재 C 표준에서 선호되는 용어는 "전달 참조"입니다. 참조."

참조 전달 및 std::forward()

std::forward() 함수는 인수를 다른 함수나 함수 객체로 전달합니다. 특히 인수가 범용 참조인 경우 인수의 유형을 보존하는 데 자주 사용됩니다. 그러나 매개변수를 전달 참조로 간주하기 위해 std::forward()를 사용해야 하는 것은 아닙니다.

결론

전달 참조는 유연한 처리 방법을 제공합니다. 함수 매개변수. rvalue 또는 lvalue 참조에 바인딩하여 코드 개발 시 편리함과 유연성을 제공할 수 있습니다. 효율적이고 유지 관리가 쉬운 C 코드를 작성하려면 전달 참조와 범용 참조의 차이점을 이해하는 것이 필수적입니다.

위 내용은 C에서 범용 참조와 전달 참조의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿