값으로 전달: 인수의 새 복사본을 만듭니다. 원본은 변경되지 않습니다.
lvalue 참조 전달: 원본 개체를 수정합니다. 안정적인 ID(lvalue)가 필요합니다.
lvalue로 전달 Const에 대한 참조: 수정하지 않고 원래 객체를 관찰합니다. lvalue와 rvalue를 모두 허용합니다.
rvalue 참조 전달: rvalue(임시 또는 이동 개체)에 바인딩합니다. 이동 작업을 수행할 수 있습니다.
수정을 위해 lvalue 참조 사용:
함수가 원래 객체를 수정해야 하는 경우 lvalue 참조(& ).
Const에 대한 lvalue 참조 사용 관찰:
객체 상태만 관찰하는 함수의 경우 const(const &)에 대한 lvalue 참조를 전달합니다.
복사 집약적이지 않은 유형의 경우 값 전달을 고려하세요. :
복사본이 저렴한 경우(예: 정수, 문자) 통과를 고려하세요. value.
Lvalue 및 Rvalue에 대한 오버로드(필요한 경우):
비용이 많이 드는 이동이 관련되어 있고 lvalue에서 이동을 피하려는 경우 별도의 오버로드를 만듭니다.
일반 처리를 위한 완벽한 전달 활용:
함수 템플릿을 사용하고 std::forward를 사용하여 인수 유형(rvalue/lvalue)에 따라 복사할지 이동할지 자동으로 결정합니다.
CreditCard 클래스: 생성자 오버로드를 고려하세요. 두 가지 버전:
CreditCard(CreditCard const& other); // lvalue reference to copy CreditCard(CreditCard&& other); // rvalue reference to move
CreditCard를 사용한 계정 클래스 회원:
원하는 동작에 따라 다음 생성자 중 하나를 사용합니다.
Account(std::string number, float amount, CreditCard const& creditCard); // Copy Account(std::string number, float amount, CreditCard&& creditCard); // Move
계정 벡터가 포함된 계정 클래스 회원:
참조로 전달 또는 수정이 예상되는지 여부에 따라 const 참조
Client(std::string firstName, std::string lastName, std::vector<Account> accounts); // Reference for modification Client(std::string firstName, std::string lastName, std::vector<const Account> accounts); // Reference to const for observation
위 내용은 C에서 올바른 매개변수 전달 메커니즘을 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!