Lidström의 주장은 구조 shared_ptr<Base> p(new Derived);가 Base에 가상 소멸자를 필요로하지 않는다는 것입니다 .
Armen Tsirunyan : "정말? shared_ptr이 올바르게 정리 될까요?이 경우 어떻게 그 효과를 구현할 수 있는지 보여 주시겠습니까?"
Daniel Lidström : " shared_ptr 는 자체 소멸자를 사용하여 Concrete 인스턴스를 삭제합니다. 이것은 C ++ 커뮤니티 내에서 RAII로 알려져 있습니다. 제 조언은 RAII에 대해 가능한 모든 것을 배우는 것입니다. 사용하면 C ++ 코딩이 훨씬 쉬워 질 것입니다. 모든 상황에서 RAII. "
Armen Tsirunyan : "RAII에 대해 알고 있습니다. 또한 pn이 0에 도달하면 shared_ptr 소멸자가 저장된 px를 삭제할 수 있다는 것도 알고 있습니다. 그러나 px 에에 대한 정적 유형 포인터
Base와에 대한 동적 유형 포인터 가있는 경우 가상 소멸자가Derived없는 경우Base정의되지 않은 동작이 발생합니다. 내가 틀렸다면 수정하십시오. "Daniel Lidström : " shared_ptr 은 정적 유형이 Concrete라는 것을 알고 있습니다. 생성자에 전달했기 때문에 이것을 알고 있습니다! 약간 마술처럼 보이지만 설계 상 매우 훌륭하다고 확신 할 수 있습니다."
그래서 우리를 판단하십시오. 가상 소멸자를 갖기 위해 다형성 클래스를 요구하지 않고 shared_ptr 을 구현하는 것이 어떻게 가능 합니까? 미리 감사드립니다