Pytania otagowane jako smart-pointer


9
std :: shared_ptr jako ostateczność?
Właśnie oglądałem strumienie „Going Native 2012” i zauważyłem dyskusję std::shared_ptr. Byłem nieco zaskoczony, słysząc nieco negatywny pogląd Bjarne'a std::shared_ptri jego komentarz, że powinien on zostać użyty jako „ostateczność”, gdy czas życia obiektu jest niepewny (co, moim zdaniem, rzadko powinno tak być). Czy ktoś chciałby wyjaśnić to nieco głębiej? Jak możemy …

1
raw, poor_ptr, unique_ptr, shared_ptr itp… Jak mądrze je wybrać?
W C ++ jest wiele wskazówek, ale szczerze mówiąc za około 5 lat w programowaniu w C ++ (szczególnie w Qt Framework) używam tylko starego surowego wskaźnika: SomeKindOfObject *someKindOfObject = new SomeKindOfObject(); Wiem, że istnieje wiele innych „inteligentnych” wskaźników: // shared pointer: shared_ptr<SomeKindofObject> Object; // unique pointer: unique_ptr<SomeKindofObject> Object; // …

5
Dlaczego Java / C # nie może implementować RAII?
Pytanie: Dlaczego Java / C # nie może implementować RAII? Wyjaśnienie: Wiem, że śmieciarz nie jest deterministyczny. Dlatego przy obecnych funkcjach językowych nie jest możliwe automatyczne wywoływanie metody Dispose () obiektu przy wyjściu z zakresu. Ale czy można dodać taką cechę deterministyczną? Moje zrozumienie: Wydaje mi się, że implementacja RAII …

5
C ++: Czy klasa powinna posiadać lub obserwować swoje zależności?
Powiedzmy, że mam klasę, Foobarktóra używa (zależy od) klasy Widget. W Widgetdawnych czasach wolud może być zadeklarowany jako pole Foobar, a może jako inteligentny wskaźnik, jeśli zachodzi potrzeba zachowania polimorficznego, i zostanie zainicjowany w konstruktorze: class Foobar { Widget widget; public: Foobar() : widget(blah blah blah) {} // or std::unique_ptr<Widget> …

3
Czy zniszczenie dużej listy przepełni mój stos?
Rozważ następującą pojedynczo połączoną implementację listy: struct node { std::unique_ptr<node> next; ComplicatedDestructorClass data; } Załóżmy teraz, że przestałem używać std::unique_ptr<node> headinstancji, która następnie wykracza poza zakres, powodując wywołanie jej destruktora. Czy to zniszczy mój stos na wystarczająco duże listy? Czy można założyć, że kompilator wykona dość skomplikowaną optymalizację (wbudowany unique_ptrdestruktor …


4
Czy niedeterministyczne zarządzanie zasobami jest nieszczelną abstrakcją?
Z tego, co widzę, istnieją dwie wszechobecne formy zarządzania zasobami: zniszczenie deterministyczne i wyraźne. Przykładami tego pierwszego byłyby niszczyciele i inteligentne wskaźniki C ++ lub podrzędny DESTROY Perla, a drugim przykładem byłby paradygmat Ruby do zarządzania zasobami lub interfejs IDNET .NET. Wydaje się, że nowsze języki wybierają to drugie, być …
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.