std :: unique_ptr to inteligentny wskaźnik, który zachowuje wyłączną własność obiektu za pośrednictwem wskaźnika. unique_ptr nie jest kopiowalny ani przypisywany do kopiowania, dwie instancje unique_ptr nie mogą zarządzać tym samym obiektem.
O ile rozumiem, wprowadzono C ++ 14 std::make_unique, ponieważ w wyniku nieokreślenia kolejności oceny parametrów było to niebezpieczne: f(std::unique_ptr<MyClass>(new MyClass(param)), g()); // Syntax A (Wyjaśnienie: jeśli ocena najpierw przydzieli pamięć dla surowego wskaźnika, a następnie wywoła g()i wyjątek zostanie zgłoszony przed std::unique_ptrkonstrukcją, wtedy nastąpi wyciek pamięci). Dzwonienie std::make_uniquebyło sposobem na …
Próbuję zrozumieć, jak std::unique_ptrdziała i do tego znalazłem ten dokument. Autor zaczyna od następującego przykładu: #include <utility> //declarations of unique_ptr using std::unique_ptr; // default construction unique_ptr<int> up; //creates an empty object // initialize with an argument unique_ptr<int> uptr (new int(3)); double *pd= new double; unique_ptr<double> uptr2 (pd); // overloaded * …
Próbuję skompilować następujący program puli wątków opublikowany w przeglądzie kodu, aby go przetestować. /codereview/55100/platform-independant-thread-pool-v4 Ale otrzymuję błędy threadpool.hpp: In member function ‘std::future<decltype (task((forward<Args>)(args)...))> threadpool::enqueue_task(Func&&, Args&& ...)’: threadpool.hpp:94:28: error: ‘make_unique’ was not declared in this scope auto package_ptr = make_unique<task_package_impl<R, decltype(bound_task)>> (std::move(bound_task), std::move(promise)); ^ threadpool.hpp:94:81: error: expected primary-expression before ‘>’ token …
Oglądam przemówienie Chandlera Carrutha w CppCon 2019: Brak abstrakcyjnych kosztów zerowych podaje w nim przykład tego, jak był zaskoczony tym, ile ponosisz koszty ogólne, używając std::unique_ptr<int>ponad int*; ten segment zaczyna się mniej więcej w punkcie czasowym 17:25. Możesz rzucić okiem na wyniki kompilacji jego przykładowej pary fragmentów (godbolt.org) - aby …
Mam pierwszą próbę użycia C ++ 11 unique_ptr; Zastępuję polimorficzny surowy wskaźnik wewnątrz mojego projektu, który jest własnością jednej klasy, ale jest często przekazywany. Kiedyś miałem takie funkcje, jak: bool func(BaseClass* ptr, int other_arg) { bool val; // plain ordinary function that does something... return val; } Ale szybko zdałem …
Czy auto_ptr zostanie wycofane w nadchodzącym standardzie C ++? Czy do przeniesienia własności należy użyć unique_ptr zamiast shared_ptr? Jeśli unique_ptr nie znajduje się w standardzie, czy muszę zamiast tego użyć shared_ptr?
Napisałem następujący kod, który używa unique_ptr<Derived>tam, gdzie unique_ptr<Base>jest oczekiwane class Base { int i; public: Base( int i ) : i(i) {} int getI() const { return i; } }; class Derived : public Base { float f; public: Derived( int i, float f ) : Base(i), f(f) {} float …
Dostać void * z funkcji w CI, zrobiłbym coś takiego (bardzo prosty przykład): void *get_ptr(size_t size) { void *ptr = malloc(size); return ptr; } Jak osiągnąć ten sam rezultat podczas używania std::unique_ptr<>?
Mam do czynienia z kodem, który nie został napisany przeze mnie. Mam to oświadczenie: // p is type of std::unique_ptr<uint8_t[]> if (p < 0) { /* throw an exception */ } Co więc p < 0oznacza w tym kontekście? Na stronie z dokumentacją uważam, że mój przypadek dotyczy tego 16) …
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.