범용 및 전달 참조: 포괄적인 설명
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!