기본 삭제를 공유 포인터용 사용자 정의 소멸자로 대체
Boost의 shared_ptr은 일반적으로 할당된 객체를 소멸하기 위해 삭제 기능을 사용합니다. 그러나 개발자가 사용자 정의 소멸자를 활용하고 싶어할 수 있는 시나리오도 있습니다.
기본 삭제 재정의
기본 삭제 동작을 재정의하려면 멤버 함수를 사용자 정의 소멸자. 예:
<code class="cpp">class CustomDeletable { public: void deleteMe() { // Implement custom deletion logic here } }; boost::shared_ptr<CustomDeletable> ptr(new CustomDeletable, &CustomDeletable::deleteMe);</code>
C 스타일 함수 처리
포인터를 반환하는 C 스타일 함수의 경우 래퍼 펑터를 사용하여 삭제 프로세스를 리디렉션할 수 있습니다.
<code class="cpp">// Custom destructor functor for C-style functions struct LibFreeFunctor { void operator()(void *ptr) { lib_freeXYZ(ptr); } }; // Usage with shared_ptr boost::shared_ptr<void> ptr(new void*, LibFreeFunctor());</code>
STL의 래퍼 펑터 사용
또는 STL은 사용자 정의 호출자 없이 사용할 수 있는 래퍼 펑터를 제공합니다.
<code class="cpp">boost::shared_ptr<T> ptr(new T, std::mem_fun_ref(&T::deleteMe)); boost::shared_ptr<S> ptr(new S, std::ptr_fun(lib_freeXYZ));</code>
이러한 기술을 활용하면 사용자 정의 소멸자를 호출하도록 shared_ptr을 맞춤화하여 개체 수명 및 리소스 할당 해제를 관리하는 데 유연성을 제공할 수 있습니다.
위 내용은 Boost의 공유 포인터에 대한 기본 삭제를 사용자 정의 소멸자로 바꾸는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!