Pytania otagowane jako smart-pointers

Abstrakcyjny typ danych, który symuluje wskaźnik, jednocześnie zapewniając dodatkowe funkcje, takie jak automatyczne wyrzucanie elementów bezużytecznych lub sprawdzanie granic


2
Jak zwrócić inteligentne wskaźniki (shared_ptr), przez odniesienie lub wartość?
Powiedzmy, że mam klasę z metodą, która zwraca shared_ptr. Jakie są możliwe zalety i wady zwrotu na podstawie referencji lub wartości? Dwie możliwe wskazówki: Wczesne niszczenie obiektów. Jeśli shared_ptrzwrócę odwołanie by (const), licznik odwołań nie zostanie zwiększony, więc ponoszę ryzyko usunięcia obiektu, gdy wyjdzie on poza zakres w innym kontekście …


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

3
magia shared_ptr :)
Pan Lidström i ja pokłóciliśmy się :) Pan Lidström twierdzi, że konstrukcja shared_ptr&lt;Base&gt; p(new Derived);nie wymaga, aby Base miał wirtualnego destruktora: Armen Tsirunyan : "Naprawdę? Czy shared_ptr wyczyści się poprawnie? Czy mógłbyś w tym przypadku zademonstrować, jak można zaimplementować ten efekt?" Daniel Lidström : „ Shared_ptr używa własnego destruktora do …

5
Czy istnieje nieatomowy odpowiednik std :: shared_ptr? A dlaczego takiego nie ma w <memory>?
To jest trochę dwuczęściowe pytanie, dotyczące atomowości std::shared_ptr: 1. O ile wiem, std::shared_ptrjest to jedyny inteligentny wskaźnik w &lt;memory&gt;tym atomowym. Zastanawiam się, czy jest std::shared_ptrdostępna nieatomowa wersja programu (w środku nic nie widzę &lt;memory&gt;, więc jestem również otwarty na sugestie spoza standardu, jak te w Boost). Wiem, że boost::shared_ptrjest również …


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
słaby reset zresetować wpływa na share_ptr?
Nie jestem przyzwyczajony do używania weak_ptri mam do czynienia z dość mylącą sytuacją. Używam aktualizacji Intel XE 2019 Composer 5 ( pakiet 2019.5.281 ) w połączeniu z Visual Studio 2019 ver. 16.2.5 . Kompiluję w wersji 64-bitowej. Używam standardowego C ++ 17 . Oto kod mojego rozwiązania szczytowego: #include &lt;memory&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.