«shared-ptr» 태그된 질문

공유 소유권을 구현하는 참조 계산 스마트 포인터 클래스


4
shared_ptr <Derived>를 shared_ptr <Base>로 전달
shared_ptr파생 유형을 shared_ptr기본 유형 을 취하는 함수 에 전달하는 가장 좋은 방법은 무엇입니까 ? 나는 일반적으로 shared_ptr불필요한 사본을 피하기 위해 s를 참조로 전달합니다 . int foo(const shared_ptr&lt;bar&gt;&amp; ptr); 하지만 다음과 같은 작업을 시도하면 작동하지 않습니다. int foo(const shared_ptr&lt;Base&gt;&amp; ptr); ... shared_ptr&lt;Derived&gt; bar = make_shared&lt;Derived&gt;(); foo(bar); 나는 사용할 수있다 foo(dynamic_pointer_cast&lt;Base, Derived&gt;(bar)); …

5
공유 포인터를 인수로 전달
공유 포인터로 래핑 된 객체를 선언하면 : std::shared_ptr&lt;myClass&gt; myClassObject(new myClass()); 그런 다음 메서드에 인수로 전달하고 싶었습니다. DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr&lt;myClass&gt; arg1) { arg1-&gt;someField = 4; } 위의 내용은 단순히 shared_pt의 참조 횟수를 증가시키고 모든 것이 멋지나요? 아니면 매달린 포인터를 남기나요? 그래도 이렇게해야합니까? : DoSomething(myClassObject.Get()); void DoSomething(std::shared_ptr&lt;myClass&gt;* arg1) { …

7
shared_ptr을 사용하는 예?
안녕하세요 저는 오늘 동일한 벡터 배열에 다른 유형의 객체를 삽입하는 방법에 대한 질문을했는데 그 질문의 코드는 gate* G[1000]; G[0] = new ANDgate() ; G[1] = new ORgate; //gate is a class inherited by ANDgate and ORgate classes class gate { ..... ...... virtual void Run() { //A virtual function } …

2
C ++에서 비어있는 std :: shared_ptr의 차이점은 무엇입니까?
cplusplus.com의 shared_ptr페이지는 구별 부른다 빈 std::shared_ptr 과 널을 shared_ptr . cppreference.com 페이지 를 명시 적으로 모두 "빈"와 비교 차이를 불러하지만, 사용하지 않는 nullptr자사의 설명에 std::shared_ptr행동. 비어있는 것과 널 사이에 차이점이 shared_ptr있습니까? 이러한 혼합 동작 포인터에 대한 사용 사례가 있습니까? 비어 있지 않은 null shared_ptr도 의미가 있습니까? 정상적인 사용에서 (즉, 명시 …
80 c++  c++11  shared-ptr 

3
shared_ptr의 삭제 기는 커스텀 할당자가 할당 한 메모리에 저장되어 있습니까?
shared_ptr사용자 지정 할당 자 와 사용자 지정 삭제 기가 있다고 가정 해보십시오. 표준에서 삭제 프로그램을 저장할 위치에 대한 내용을 찾을 수 없습니다. 사용자 지정 할당자가 삭제 프로그램의 메모리에 사용될 것이라고 말하지 않으며 그렇지 않을 것이라고 말하지 않습니다 . 이것이 지정되지 않았습니까? 아니면 뭔가 빠졌습니까?
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.