enable_shared_from_this의 중요성 이해
질문:
Boost.Asio 예제를 탐색하는 동안, 많은 개발자가 Enable_shared_from_this 개념을 접하게 됩니다. 문서를 읽었음에도 불구하고 실제 적용은 불분명합니다. 예를 들어 이 클래스를 활용하는 것이 적절한지 설명해 주시겠습니까?
답변:
enable_shared_from_this는 "this"에 유효한 shared_ptr 인스턴스를 얻을 수 있는 기능을 부여합니다. "this"만 사용할 수 있는 상황에서. 이 기능이 없으면 "this"에 대한 shared_ptr을 얻으려면 이미 하나를 멤버로 정의해야 합니다.
Boost 문서에서 다음 예를 고려하세요.
class Y: public enable_shared_from_this<Y> { public: shared_ptr<Y> f() { return shared_from_this(); } }; int main() { shared_ptr<Y> p(new Y); shared_ptr<Y> q = p->f(); assert(p == q); assert(!(p < q || q < p)); // p and q must share ownership }
f() 메서드는 반환합니다. 멤버 인스턴스가 없음에도 불구하고 유효한 shared_ptr.
단순히 shared_ptr을 반환하면 구성된다는 점에 유의하는 것이 중요합니다. "this"를 인수로 사용하는 것은 허용 가능한 솔루션이 아닙니다. 합법적인 "공유" 참조 횟수와 다른 참조 횟수가 발생하기 때문입니다. 결과적으로 공유 포인터 중 하나는 객체 삭제 시 매달린 참조로 끝날 수 있습니다.
enable_shared_from_this는 이제 C 11 표준의 일부이므로 C 11과 Boost를 통해 액세스할 수 있습니다.
위 내용은 C에서 `enable_shared_from_this`를 언제 어떻게 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!