문제

곧 관련 글을 올리겠습니다. 내 블로그, 하지만 먼저 제가 놓친 것이 없는지 확인하고 싶습니다.

제가 놓친 예를 찾으시면 제 게시물에 인용하겠습니다.

주제는 싱글톤 구현 실패입니다.어떤 경우에 할 수 있나요? 우연히 싱글톤의 여러 인스턴스를 얻으시겠습니까?

지금까지 나는 다음을 생각해 냈습니다.

  • 첫 번째 호출 시 경쟁 조건 instance()
  • 여러 DLL 또는 DLL 및 실행 파일에 통합
  • 싱글톤의 템플릿 정의 - 실제로는 별도의 클래스

내가 놓친 다른 방법은 없을까요? 아마도 상속 때문일까요?

도움이 되었습니까?

해결책

cpp 파일에서 초기화하는 정적 인스턴스 필드를 사용하는 경우 일부 정적/전역의 초기화가 싱글톤의 인스턴스를 가져오려고 하면 여러 인스턴스(및 더 나쁜 동작)를 얻을 수 있습니다.이는 컴파일 단위 전체의 정적 초기화 순서가 정의되지 않았기 때문입니다.

다른 팁

ctor가 비공개인 한 상속은 문제가 되지 않습니다.

그러나 복사 생성자를 허용하지 않으면 사용자가 의도치 않게 싱글톤 인스턴스를 복사할 수 있습니다.비공개로 상속 부스트::복사 불가능 이를 방지하는 가장 쉬운 방법입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top