enable_shared_from_this가 객체 소유권 유지에 어떻게 도움이 됩니까?
Boost.Asio 예제를 탐색하는 동안 활성화_shared_from_this를 접했을 수 있습니다. 문서를 참조했음에도 불구하고 사용법이 불분명합니다. 다음은 그 목적을 명확히 하는 포괄적인 설명과 예입니다.
enable_shared_from_this를 사용하면 객체 자체(이로 표시)에만 액세스할 수 있는 경우 객체에 대해 유효한 shared_ptr 인스턴스를 생성할 수 있습니다. 이것이 없으면 이미 멤버로 정의되어 있지 않으면 이에 대한 shared_ptr을 얻는 것이 불가능합니다.
다음 예를 고려하십시오.
class Y: public enable_shared_from_this<Y> { public: shared_ptr<Y> f() { return shared_from_this(); } };
여기서 f() 메서드는 유효한 값을 반환할 수 있습니다. 멤버 인스턴스가 없더라도 shared_ptr입니다. 다음 접근 방식은 실패합니다.
class Y: public enable_shared_from_this<Y> { public: shared_ptr<Y> f() { return shared_ptr<Y>(this); } };
결과는 참조 횟수가 다른 두 개의 shared_ptr이 됩니다. 개체가 삭제되면 그 중 하나가 매달린 참조가 됩니다.
enable_shared_from_this는 이제 C 11 표준의 일부이므로 Boost뿐만 아니라 거기에서도 액세스할 수 있다는 점에 유의하는 것이 중요합니다.
위 내용은 `enable_shared_from_this`는 C에서 공유 포인터 소유권 문제를 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!