Pytanie naprawdę pasuje do tytułu: jestem ciekawy, jaki jest techniczny powód tej różnicy, ale także uzasadnienie? std::shared_ptr<void> sharedToVoid; // legal; std::unique_ptr<void> uniqueToVoid; // ill-formed;
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<bar>& ptr); ale to nie działa, jeśli spróbuję zrobić coś takiego int foo(const shared_ptr<Base>& ptr); ... shared_ptr<Derived> bar = make_shared<Derived>(); foo(bar); mógłbym użyć foo(dynamic_pointer_cast<Base, Derived>(bar)); …
Jeśli zadeklaruję obiekt zawinięty we współdzielony wskaźnik: std::shared_ptr<myClass> myClassObject(new myClass()); następnie chciałem przekazać to jako argument do metody: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr<myClass> arg1) { arg1->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 …
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 …
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 …
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?
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.