«smart-pointers» 태그된 질문

자동 가비지 수집 또는 경계 검사와 같은 추가 기능을 제공하면서 포인터를 시뮬레이션하는 추상 데이터 유형



2
참조 또는 값으로 스마트 포인터 (shared_ptr)를 반환하는 방법은 무엇입니까?
을 반환하는 메서드가있는 클래스가 있다고 가정 해 보겠습니다 shared_ptr. 참조 또는 가치로 반품 할 경우 가능한 이점과 단점은 무엇입니까? 두 가지 가능한 단서 : 초기 개체 파괴. shared_ptrby (const) 참조를 반환하면 참조 카운터가 증가하지 않으므로 다른 컨텍스트 (예 : 다른 스레드)에서 범위를 벗어날 때 개체가 삭제 될 위험이 있습니다. 이 …

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)); …

3
shared_ptr 매직 :)
Mr. Lidström과 저는 논쟁을했습니다. :) Lidström의 주장은 구조 shared_ptr&lt;Base&gt; p(new Derived);가 Base에 가상 소멸자를 필요로하지 않는다는 것입니다 . Armen Tsirunyan : "정말? shared_ptr이 올바르게 정리 될까요?이 경우 어떻게 그 효과를 구현할 수 있는지 보여 주시겠습니까?" Daniel Lidström : " shared_ptr 는 자체 소멸자를 사용하여 Concrete 인스턴스를 삭제합니다. 이것은 C ++ …

5
std :: shared_ptr에 상응하는 원자가 아닌 것이 있습니까? 그런데 왜 <memory>에 하나가 없나요?
이것은 원자성에 관한 두 부분으로 구성된 질문입니다 std::shared_ptr. 1. 내가 말할 수있는 한, 원 자성 std::shared_ptr에서 유일한 스마트 포인터입니다 &lt;memory&gt;. std::shared_ptr사용 가능한 비 원자 버전이 있는지 궁금합니다 (에서 아무것도 볼 수 없으므로 &lt;memory&gt;Boost의 것과 같이 표준 외부의 제안에도 열려 있습니다). 나는 boost::shared_ptr또한 원자 ( BOOST_SP_DISABLE_THREADS정의되지 않은 경우 ) 라는 것을 …


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
weak_ptr 재설정이 shared_ptr에 영향을 줍니까?
나는 사용에 익숙하지 않으며 매우 weak_ptr혼란스러운 상황에 직면하고 있습니다. 내가 사용하고 인텔 XE 2019 작곡가 업데이트 5 ( 패키지 2019.5.281을 함께 combinaison에) 버전의 Visual Studio 2019. 16.2.5 . 64 비트로 컴파일합니다. 표준 C ++ 17을 사용합니다 . 내 스파이크 솔루션의 코드는 다음과 같습니다. #include &lt;memory&gt; #include &lt;iostream&gt; using namespace std; …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.