2014-02-13 6 views
0

개체를 내부적으로 (개인) QSharedPointer로 저장하고 있으므로 삭제됩니다. getter에 대해 원시 포인터 또는 QSharedPointer 참조를 반환해야합니까?개체에서 getters가 참조 포인터 또는 QSharedPointers를 반환해야합니까?

또한 무엇인지 모르겠다는 의미는 무엇입니까 http://qt-project.org/wiki/SharedPointersAndQmlOwnership. 누군가 나를 위해 요약 할 수 있을까요?

+1

일반적인 규칙은 없습니다. 힙에 객체를 생성해야합니까? 둘러싸는 객체가 객체를 소유해야합니까, 아니면 소유권을 공유해야합니까? 다른 관리 방법 (QSharedPointer와 호환되지 않는 부모를 가진 QObject)이 있습니까? –

답변

1

최종적으로 getter의 의미를 정의합니다. 그것에 의해 반환 된 객체의 수명을 지정하는 것은 당신에게 달려 있습니다. 게터 되돌아가 그 회원 게터는 객체를 오래 살 것으로 예상된다 어떤 경우에 특히

, 다음 해야 중 하나

  • 수익 공유 포인터, 또는

  • 돌려 부. 당신의 내부에 저장된 객체가 암시 적으로 공유 할 수

은 (안 같은 QSharedPointer로를 QSharedDataQSharedDataPointer (를 사용하여 말을!), 복사가 추가 수정의 대상이되지 않을 경우 만들 저렴 수 있도록.

    : 게터 반환은 누구의 회원 게터는, 당신은 은 또한 다음과 같은 옵션을 제공 할 수있는 객체로 오랫동안 살아 유효 할 필요가 어떤 경우

  • 반환 참조,

  • 돌려 const를 참조

  • 복귀 일반 포인터 (비 스마트).

명목상의 값은 참조를 반환과 일반 포인터 누구 게터 부재는 대상물이 죽으면 쓸모없는 것으로 추정되어를 게터에 의해 반환. 힙 할당 객체에 대한 소유권이 포인터를 반환하여 호출자에게 전달되는 경우에만 명시 적으로 "getter"를 문서화함으로써 추정을 깨뜨릴 수 있습니다.