C++ 11 설명서를 읽는 데있어 불분명 한 점에 대한 의견이 있습니다.클래스 멤버 포인터에 대해 unique_ptr을 사용해야합니까?
답변
물론입니다. 그러면 rule of three이 처리됩니다.
'unique_ptr' 데이터 멤버가 있으면 자동으로 올바른 기본 소멸자를 얻음을 의미하지만 기본 복사본 구성 및 복사본 할당이 불가능 해집니다. – jogojapan
@jogojapan : 자네는 이동 공사를하고 무료로 과제물을 옮기므로, 빈 손으로 남겨 두지 않아. ; -] – ildjarn
@Nikolai : 헤더에'unique_ptr'의 페이로드 클래스를 정의한 경우에만. 대부분의 경우 개인 클래스를 게시하지 않아도되도록 handle/pimpl 포인터 관용구를 사용합니다. 이 경우, 여전히'unique_ptr'을 사용할 수 있지만, 디폴트 및 복사 생성은 물론, 라인 밖의 파기 및 복사 할당 (copy-swap 트릭을 사용하여 인라인 가능)을 구현해야합니다. 물론 shared_ptr만이 Deleter에 대해 수행되는 유형 삭제 때문에 다른 규칙과는 달리 3 가지 규칙 (C++ 11 규칙 5)을 처리합니다. –
- 1. 소유권 의미론과 같은 원시 포인터에 대해 unique_ptr을 반환하는 나쁜 습관이 있습니까?
- 2. 멤버 함수 포인터에 대한 템플릿 인수 차감
- 3. const 멤버 함수 포인터에 대한 전문화
- 4. 구조체에 대한 포인터에 대한 멤버 액세스 구문
- 5. 구조체의 멤버 포인터에 로컬 변수의 주소가 할당됩니다.
- 6. 포인터에 대해 잘못된 값이 잘못되었습니다.
- 7. unique_ptr을 함수에 전달
- 8. 클래스 멤버
- 9. 클래스 내에서`this`를 사용해야합니까?
- 10. pimpl에 unique_ptr을 어떻게 사용합니까?
- 11. 나는 약간의 메모리 포인터에 대해 혼란 스럽다.
- 12. 클래스 멤버 액세스-수정이
- 13. 배열에 대한 포인터에 대해 realloc이 실패했습니다.
- 14. 클래스 멤버 인 함수에 대해 CreateThread를 어떻게 사용합니까?
- 15. 기본 클래스 멤버 함수는 하위 클래스 멤버 함수에 직접 액세스합니까?
- 16. 소유권 및 원시 포인터로 unique_ptr을 사용합니까?
- 17. 함수 클래스 또는 함수 네임 스페이스를 사용해야합니까?
- 18. 클래스 인스턴스 멤버 초기화
- 19. 추상 클래스 멤버 변수
- 20. 멤버 클래스 선언 문제
- 21. 공용 클래스 멤버
- 22. vb.net에서 모호한 클래스 멤버
- 23. 자바 클래스 멤버 구성
- 24. 원형 클래스 멤버 포인터입니까?
- 25. 는 일반적인 클래스 멤버
- 26. 클래스 멤버 및 상속
- 27. 나는 클래스가 클래스 멤버
- 28. 상속과 클래스 멤버 GIVEN
- 29. C#의 클래스 멤버
- 30. 다중 상속의 파생 클래스 포인터에 대한 포인터
확실히 할 수 있지만이 방법을 사용할지 또는 대안을 사용할 지에 따라 달라집니다. 제어하는 포인터의 소유권 의미 란 무엇입니까? –
이 질문에 답을 얻으려면이 질문을 더 자세히해야합니다. * 가능한지 궁금합니다 *? 즉, 'unique_ptr' 멤버를 만들면 문제가 발생합니까? 아니면 좋은 생각인지 묻는거야? 그렇다면 어떤 상황에서? –