> 백엔드 개발 > C++ > 타사 클래스에 대한 std::unique_ptr 멤버와 함께 사용자 정의 삭제자를 어떻게 사용할 수 있습니까?

타사 클래스에 대한 std::unique_ptr 멤버와 함께 사용자 정의 삭제자를 어떻게 사용할 수 있습니까?

Patricia Arquette
풀어 주다: 2024-12-06 03:17:10
원래의
557명이 탐색했습니다.

How Can I Use Custom Deleters with std::unique_ptr Members for Third-Party Classes?

std::unique_ptr 멤버와 함께 사용자 정의 삭제자 사용

객체 지향 프로그래밍에서는 고유로 관리되는 멤버 객체를 활용하는 것이 종종 바람직합니다. 포인터(std::unique_ptr). 그러나 사용자 정의 메모리 관리 요구 사항이 있는 타사 클래스를 처리할 때 사용자 정의 삭제자를 사용하는 것이 도움이 될 수 있습니다.

고유 포인터( std::unique_ptr). 타사 클래스(Bar)는 메모리 관리를 위한 create() 및 destroy() 함수를 제공합니다.

이 문제를 해결하려면 다음과 유사한 구문을 사용하여 Foo 클래스 내에 사용자 정의 삭제기를 구현할 수 있습니다.

class Foo {
private:
    std::unique_ptr<Bar, void(*)(Bar*)> ptr_;

    // ...

public:
    Foo() : ptr_(create(), destroy) { /* ... */ }

    // ...
};
로그인 후 복사

이 예에서 create() 및 destroy()는 다음을 준수하는 자유 함수로 가정됩니다. 서명:

Bar* create();
void destroy(Bar*);
로그인 후 복사

고유 포인터의 두 번째 템플릿 인수로 destroy를 지정하면 관리 객체가 삭제될 때 포인터가 destroy()를 호출하도록 효과적으로 지시할 수 있습니다.

이 접근 방식을 사용하면 자동 리소스 할당 해제 및 소유권 의미 체계와 같은 고유 포인터 사용의 이점을 유지하면서 타사 멤버 개체의 메모리를 원활하게 관리할 수 있습니다.

위 내용은 타사 클래스에 대한 std::unique_ptr 멤버와 함께 사용자 정의 삭제자를 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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