공유 포인터 전달: 참조 또는 값으로
shared_ptr(부스트 또는 C 11 STL에서)을 함수에 전달할 때, const 참조(void foo(const shared_ptr
전통적으로는 불필요한 복사 작업을 피하기 때문에 참조로 전달하는 것이 더 빠를 것이라고 믿었습니다. 그러나 C and Beyond 2011의 전문가(Scott, Andrei, Herb)가 논의한 것처럼 더 이상 그렇지 않습니다.
값으로 전달해야 할까요, 아니면 참조로 전달해야 할까요?
객체의 소유권을 명시적으로 공유해야 하는 경우가 아니면(예: 데이터 구조 또는 스레드 간), 값으로 shared_ptr을 전달해야 할 강력한 이유가 없습니다. const 참조를 전달하는 것은 다음과 같은 이유로 선호됩니다.
값으로 전달해야 하는 경우
shared_ptr을 값으로 전달하는 것이 권장되는 유일한 경우는 다음과 같습니다. 목적은 객체의 소유권을 함수로 이전하는 것입니다. 이는 일반적으로 함수가 객체의 수명 관리를 책임져야 하는 경우입니다.
추가 고려 사항
최적의 성능을 위해서는 shared_ptr이 이동에 최적화될 수 있습니다. Scott Meyers가 설명했듯이 이동 최적화를 사용하면 불필요한 복사 작업이 필요하지 않게 됩니다. 그러나 이 최적화는 특정 버전의 C에서만 사용할 수 있습니다.
위 내용은 `shared_ptr`을 값으로 전달해야 합니까, 아니면 참조로 전달해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!