C 11에서 값에 의한 전달 다시 생각
C의 세계에서는 전통적으로 값에 의한 전달이 대규모로 권장되지 않습니다. 성능 문제로 인한 개체. 그러나 C 11에 Rvalue 참조 및 이동 생성자가 도입되면서 객체를 효율적으로 전달할 수 있는 새로운 가능성이 열렸습니다.
이제 값별 전달이 최고의 기본값인가요?
업계 전문가인 Dave Abrahams에 따르면 함수 내에서 복사본을 만들어야 하는 경우 std::Vector 및 std::string과 같은 큰 개체를 값으로 전달하는 것이 합리적입니다. 몸. 이를 통해 컴파일러는 최적화를 수행할 수 있으므로 프로그래머가 명시적으로 복사할 필요가 없습니다.
장점:
사용자 정의 개체:
사용자 정의 개체의 경우 const에 대한 참조별 전달은 여전히 입니다. 유연성을 제공하고 원래 개체를 의도치 않게 수정하는 위험을 최소화하므로 실행 가능한 옵션입니다.
최고 사례:
예:
권장 패턴을 구현하려면 값 있는 생성자를 다음과 같이 작성할 수 있습니다.
class T { U u; V v; public: T(U u, V v) : u(std::move(u)) , v(std::move(v)) {} };
위 내용은 Modern C에서 값별 전달이 대형 객체의 기본값이어야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!