Pytania otagowane jako shared-ptr

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


4
Przekazywanie shared_ptr <Derived> jako shared_ptr <Base>
Jaka jest najlepsza metoda przekazywania a shared_ptrtypu pochodnego do funkcji, która przyjmuje shared_ptrtyp podstawowy? Generalnie przekazuję shared_ptrje jako odniesienie, aby uniknąć niepotrzebnych kopii: int foo(const shared_ptr&lt;bar&gt;&amp; ptr); ale to nie działa, jeśli spróbuję zrobić coś takiego int foo(const shared_ptr&lt;Base&gt;&amp; ptr); ... shared_ptr&lt;Derived&gt; bar = make_shared&lt;Derived&gt;(); foo(bar); mógłbym użyć foo(dynamic_pointer_cast&lt;Base, Derived&gt;(bar)); …

5
Przekazywanie wspólnych wskaźników jako argumentów
Jeśli zadeklaruję obiekt zawinięty we współdzielony wskaźnik: std::shared_ptr&lt;myClass&gt; myClassObject(new myClass()); następnie chciałem przekazać to jako argument do metody: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr&lt;myClass&gt; arg1) { arg1-&gt;someField = 4; } Czy powyższe po prostu zwiększa liczbę referencji shared_pt i wszystko jest w porządku? A może pozostawia zwisający wskaźnik? Nadal masz …

7
Przykład użycia shared_ptr?
Cześć Zadałem dziś pytanie o to, jak wstawiać różne typy obiektów w tej samej tablicy wektorowej, a mój kod w tym pytaniu był gate* G[1000]; G[0] = new ANDgate() ; G[1] = new ORgate; //gate is a class inherited by ANDgate and ORgate classes class gate { ..... ...... virtual …

2
Jaka jest różnica między pustym a null std :: shared_ptr w C ++?
Cplusplus.com shared_ptrstrona nazywa się rozróżnienie między pusty std::shared_ptr a wartość null shared_ptr . Strona cppreference.com nie wyjaśnia wyraźnie tego rozróżnienia, ale nullptrw opisie std::shared_ptrzachowania używa zarówno słowa „pusty”, jak i porównania . Czy jest różnica między pustym a null shared_ptr? Czy jest jakiś przypadek użycia dla takich wskaźników o mieszanym …
80 c++  c++11  shared-ptr 

3
Czy separator shared_ptr jest przechowywany w pamięci przydzielonej przez niestandardowy program przydzielający?
Powiedzmy, że mam shared_ptrniestandardowy alokator i niestandardowy usuwacz. Nie mogę znaleźć w standardzie niczego, co mówi o tym, gdzie powinien być przechowywany usuwacz: nie mówi, że niestandardowy alokator zostanie użyty do pamięci usuwacza, i nie mówi, że nie będzie. Czy jest to nieokreślone, czy coś mi brakuje?
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.