최근 토론에서 Daniel Lidström은 shared_ptr
가상 소멸자 없이 Shared_Ptr 구현
이 구현의 핵심은 유형 삭제에 있습니다. Shared_ptr은 단순한 참조 카운터 이상의 것을 저장합니다. 여기에는 객체 파괴를 처리하는 삭제자(데이터 구조의 일부로 저장됨)가 포함됩니다. 이 삭제자는 모든 유형이 될 수 있으므로 T(shared_ptr의 템플릿 유형) 범위를 넘어서는 사용자 정의가 가능합니다.
파생 클래스에 대한 사용자 정의
shared_ptr을 생성할 때< ;베이스> Derived 객체에서 템플릿 기반 생성자가 호출되어 구체적인 유형 Derived를 지정할 수 있습니다. 생성자는 동적 유형에 대한 지식을 바탕으로 필요한 삭제자를 생성하여 Base에 가상 소멸자가 없어도 적절한 객체 소멸을 보장합니다.
구현 예
template<class T> class shared_ptr { public: ... template<class Y> explicit shared_ptr(Y* p); ... };
위 내용 생성자를 사용하면 shared_ptr
C 11 표준 요구 사항
C 11 표준에서는 명시적으로 다음 동작을 요구합니다.
위 내용은 `shared_ptr`은 `Base`의 가상 소멸자 없이 `파생` 객체를 관리할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!