> 백엔드 개발 > C++ > 복잡함에도 불구하고 `std::make_unique`가 C에 추가된 귀중한 기능인 이유는 무엇입니까?

복잡함에도 불구하고 `std::make_unique`가 C에 추가된 귀중한 기능인 이유는 무엇입니까?

DDD
풀어 주다: 2024-12-16 06:06:16
원래의
629명이 탐색했습니다.

Why is `std::make_unique` a valuable addition to C   despite its complexity?

std::make_unique: 누락된 표준 라이브러리 편의성

C 11 표준 라이브러리에는 std::make_unique 함수 템플릿이 부족하여 개발자가 자세한 코드를 작성하여 고유 포인터. 다음 예를 고려하십시오.

std::unique_ptr<SomeUserDefinedType> p(new SomeUserDefinedType(1, 2, 3));
로그인 후 복사

이러한 장황함을 완화하기 위해 일부 개발자는 make_unique 함수를 제안했습니다.

auto p = std::make_unique<SomeUserDefinedType>(1, 2, 3);
로그인 후 복사

이 구문은 new 연산자를 숨기고 유형을 한 번만 언급합니다.

그러나 이러한 기능을 구현하려면 완벽한 전달의 복잡성을 이해해야 합니다. 특히 std::forward 표현식:

std::forward<Args>(args)...
로그인 후 복사

은 다음 작업을 포함합니다.

  • std::forward Args의 모든 lvalue 또는 rvalue 참조를 결과로 전달하는 유형 변환 표현식입니다.
  • std::forward(args)는 args에 해당 인수를 전달하여 Args를 추론하고 구성하는 함수 호출 표현식입니다.
  • ... 전달된 인수를 매개변수 팩으로 압축 해제합니다.

요약하면, std::forward<Args>(args)... 생성자로 인수를 완벽하게 전달할 수 있습니다.

위 내용은 복잡함에도 불구하고 `std::make_unique`가 C에 추가된 귀중한 기능인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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