Pytania otagowane jako shared-ptr

Odwołanie do liczonej klasy inteligentnego wskaźnika implementującej współdzieloną własność


8
Różnica w make_shared i normal shared_ptr w C ++
std::shared_ptr<Object> p1 = std::make_shared<Object>("foo"); std::shared_ptr<Object> p2(new Object("foo")); Wiele postów z Google i Stackoverflow jest na ten temat, ale nie jestem w stanie zrozumieć, dlaczego make_sharedjest bardziej wydajny niż bezpośrednie korzystanie shared_ptr. Czy ktoś może mi wyjaśnić krok po kroku sekwencję obiektów utworzonych i operacji wykonanych przez oba, aby móc zrozumieć, …
276 c++  c++11  shared-ptr 

10
Czy powinniśmy przekazać shared_ptr przez referencję czy wartość?
Gdy funkcja przyjmuje wartość shared_ptr (z boost lub C ++ 11 STL), przekazujesz ją: według stałej referencji: void foo(const shared_ptr<T>& p) lub według wartości void foo(shared_ptr<T> p):? Wolałbym pierwszą metodę, ponieważ podejrzewam, że byłaby szybsza. Ale czy to naprawdę jest tego warte, czy są jakieś dodatkowe problemy? Czy możesz podać …
270 c++  c++11  boost  shared-ptr 


16
Jak wywołać :: std :: make_shared na klasie z tylko chronionymi lub prywatnymi konstruktorami?
Mam ten kod, który nie działa, ale myślę, że cel jest jasny: testmakeshared.cpp #include <memory> class A { public: static ::std::shared_ptr<A> create() { return ::std::make_shared<A>(); } protected: A() {} A(const A &) = delete; const A &operator =(const A &) = delete; }; ::std::shared_ptr<A> foo() { return A::create(); } Ale …
187 c++  c++11  shared-ptr 

2
shared_ptr do tablicy: czy należy go używać?
Tylko małe zapytanie dotyczące shared_ptr. Czy warto shared_ptrwskazać tablicę? Na przykład, shared_ptr<int> sp(new int[10]); Jeśli nie, to dlaczego nie? Jednym z powodów, o których już wiem, jest to, że nie można zwiększać / zmniejszać wartości shared_ptr. Dlatego nie może być używany jako normalny wskaźnik do tablicy.
172 c++  c++11  shared-ptr 

2
Używanie inteligentnych wskaźników dla członków klasy
Mam problem ze zrozumieniem użycia inteligentnych wskaźników jako członków klasy w C ++ 11. Dużo czytałem o inteligentnych wskazówkach i myślę, że rozumiem, jak unique_ptri shared_ptr/ weak_ptrdziała ogólnie. To, czego nie rozumiem, to prawdziwe użycie. Wygląda na to, że wszyscy zalecają używanie unique_ptrgo prawie cały czas. Ale jak bym zaimplementował …

6
Dlaczego miałbym std :: przenieść std :: shared_ptr?
Przeglądałem kod źródłowy Clang i znalazłem ten fragment: void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = std::move(Value); } Dlaczego miałbym chcieć ?std::movestd::shared_ptr Czy jest jakiś sens przenoszenia własności do udostępnionego zasobu? Dlaczego nie miałbym po prostu tego zrobić? void CompilerInstance::setInvocation( std::shared_ptr<CompilerInvocation> Value) { Invocation = Value; }

6
Dlaczego std :: shared_ptr <void> działa
Znalazłem kod używający std :: shared_ptr do wykonania dowolnego czyszczenia przy wyłączaniu. Na początku myślałem, że ten kod nie może działać, ale potem wypróbowałem następujące: #include &lt;memory&gt; #include &lt;iostream&gt; #include &lt;vector&gt; class test { public: test() { std::cout &lt;&lt; "Test created" &lt;&lt; std::endl; } ~test() { std::cout &lt;&lt; "Test destroyed" …
129 c++  c++11  shared-ptr 

4
Różnica między `const shared_ptr <T>` i `shared_ptr <const T>`?
Piszę metodę akcesora dla współdzielonego wskaźnika w C ++, która wygląda mniej więcej tak: class Foo { public: return_type getBar() const { return m_bar; } private: boost::shared_ptr&lt;Bar&gt; m_bar; } Tak więc, aby obsługiwać stałą getBar()zwracanego typu, powinno być a, boost::shared_ptrktóre zapobiega modyfikacji wskazanego przez Barniego. Moje przypuszczenie jest to, że …
116 c++  boost  const  shared-ptr 

17
C ++ - przekazywanie referencji do std :: shared_ptr lub boost :: shared_ptr
Jeśli mam funkcję, która musi współpracować z a shared_ptr, czy nie byłoby bardziej wydajne przekazanie jej odwołania do niej (aby uniknąć kopiowania shared_ptrobiektu)? Jakie są możliwe złe skutki uboczne? Wyobrażam sobie dwa możliwe przypadki: 1) wewnątrz funkcji tworzona jest kopia argumentu, jak w ClassA::take_copy_of_sp(boost::shared_ptr&lt;foo&gt; &amp;sp) { ... m_sp_member=sp; //This will …

3
Wyjaśnienie bezpieczeństwa wątków std :: shared_ptr
Czytam http://gcc.gnu.org/onlinedocs/libstdc++/manual/shared_ptr.html i niektóre problemy z bezpieczeństwem wątków nadal nie są dla mnie jasne: Standardowo gwarantuje, że zliczanie referencji jest obsługiwane wątkowo i niezależne od platformy, prawda? Podobny problem - standardowa gwarancja, że ​​tylko jeden wątek (trzymający ostatnią referencję) wywoła delete na udostępnionym obiekcie, prawda? shared_ptr nie gwarantuje żadnego bezpieczeństwa …
106 c++  c++11  shared-ptr 


4
Gdzie jest shared_ptr?
Jestem bardzo sfrustrowany po kilku godzinach prób znalezienia lokalizacji shared_ptr. Żaden z przykładów, które widzę, nie pokazuje pełnego kodu zawierającego nagłówki shared_ptr(i działające). Po prostu stwierdzając std, tr1i &lt;memory&gt;nie pomaga w ogóle! Pobrałem doładowania i wszystko, ale nadal się nie pojawiają! Czy ktoś może mi pomóc, podając dokładnie, gdzie go …

2
std :: shared_ptr tego
Obecnie próbuję nauczyć się korzystać z inteligentnych wskaźników. Jednak podczas niektórych eksperymentów odkryłem następującą sytuację, dla której nie mogłem znaleźć satysfakcjonującego rozwiązania: Wyobraź sobie, że masz obiekt klasy A będący rodzicem obiektu klasy B (dziecko), ale oboje powinni się znać: class A; class B; class A { public: void addChild(std::shared_ptr&lt;B&gt; …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.