raii

RAII i inteligentne wskaźniki W C++

W praktyce z C++ czym jest RAII, Czym są Inteligentne Wskaźniki, Jak są one implementowane w programie i jakie są korzyści z używania RAII z inteligentnymi wskaźnikami?

wyrzucenie WYJĄTKÓW z destruktora

Większość ludzi mówi Nigdy nie wyrzucaj wyjątku z destruktora - powoduje to nieokreślone zachowanie. Stroustrup stwierdza, ... e nie w destruktorze, czy nie ma sensu rzucać wyjątek od destruktora? Oczywiście tego rodzaju błędy są rzadkie, ale możliwe.

Zrozumienie znaczenia terminu i pojęcia - RAII (pozyskiwanie zasobów jest inicjalizacją)

Czy moglibyście dać nam dobry opis czym jest RAII, dlaczego jest on ważny i czy może mieć jakiekolwiek znaczenie dla innych j ... eraniu śmieci? Przynajmniej śmieciarka, której mógłbyś użyć do niektórych obiektów pozwalając innym być zarządzanym? Dzięki.

Dlaczego źle jest używać std:: auto ptr< > ze standardowymi kontenerami?

Dlaczego używanie std::auto_ptr<> ze standardowymi pojemnikami jest złe?

Czy muszę ręcznie zamknąć ifstream?

Czy muszę ręcznie wywołać close() Kiedy używam std::ifstream? Na przykład w kodzie: std::string readContentsOfFile(std::st ... ime_exception("file not found"); } Czy muszę ręcznie dzwonić? Czy ifstream nie powinno się używać RAII do zamykania plików?

Czy używanie IDisposable i "using" jako środka do uzyskania "scoped behavior" dla bezpieczeństwa wyjątków jest obraźliwe?

Coś, czego często używałem w C++, to pozwalanie klasie A obsługiwać stan wejścia i wyjścia dla innej klasy B, za pomocą konst ... problem z przeglądem kodu, ale coś mnie dręczy. Pytanie: [[24]] czy powyższe można uznać za nadużywanie using i IDisposable?

C / C++ makro / szablon blackmagic do generowania unikalnej nazwy

Makra są w porządku. Szablony są w porządku. Cokolwiek to działa, jest w porządku. Przykładem jest OpenGL; ale technika jest ... nie utworzy zmienną, której konstruktor jest wywoływany w punkcie definicji, a Destruktor wywoływany na końcu bloku? Dzięki!

RAII tutorial for C++ [zamknięty]

zamknięte. to pytanie nie spełnia wytycznych dotyczących przepełnienia stosu . Obecnie nie przyjmuje odpowiedzi. ... gramach. Szybkie wyszukiwanie w google nie pokazało żadnych miłych tutoriale. Czy ktoś ma jakieś fajne linki do nauki RAII?

Czy użycie ScopeGuard naprawdę prowadzi do lepszego kodu?

Natknąłem się na Ten artykuł napisany przez Andrei Alexandrescu i Petru Marginean wiele lat temu, który przedstawia i omawia ... byłby lepiej przedstawiony w bloku catch? Czy ktoś ma jakieś doświadczenie w używaniu ich w rzeczywistym kodzie produkcyjnym?

Dlaczego nie ma RAII in.NET?

Będąc przede wszystkim programistą C++, Brak RAII (pozyskiwanie zasobów jest inicjalizacją) w Javie i. NET zawsze mi przeszka ... o pochodzenia. Możesz wziąć moją deterministyczną destrukcję, kiedy moja zimna Martwa ręka wyjdzie poza zasięg. -- Anon

Czy destruktory są wywoływane po wrzuceniu C++?

Uruchomiłem przykładowy program i rzeczywiście wywoływane są destruktory dla obiektów przydzielanych przez stos, ale czy jest to zagwarantowane przez standard?

Czy Java obsługuje RAII/deterministyczną destrukcję?

Minęło co najmniej 5 lat odkąd pracowałem z Javą, i wtedy, kiedy chciałeś przydzielić obiekt, który wymagał czyszczenia (np. ... zez googlowanie.) Więc jeśli ktoś mógłby wskazać mi jakiś materiał wprowadzający, jak to zrobić w Javie, to byłoby świetnie!

RAII w Pythonie-automatyczne niszczenie przy opuszczaniu lunety

Próbowałem znaleźć RAII w Pythonie. Alokacja zasobów jest Inicjalizacja to wzorzec w C++, w którym obiekt jest inicjowany w t ... reter aby złapać moje niedbałe błędy wielokrotnego użytku? Oczywiście, że jestem leniwy., ale czy jestem leniwy w zły sposób?

Czy można użyć współdzielonego ptr dla RAII tablic w stylu C?

Pracuję nad sekcją kodu, która ma wiele możliwych punktów awarii, które powodują, że kończy się ona wcześniej. Biblioteki, z ... pArray = raiiArray.get(); if(SomeFunctionThatRequiresCArray(pArray) == FAILED) { return; } //etc. }

Wrapper RAII dla obiektów OpenGL

Chcę napisać prosty wrapper RAII dla obiektów OpenGL (tekstur, buforów ramek, itp.) Zauważyłem, że wszystkie funkcje glGen* i ... ject2<2>(glGenRenderbuffers, glDeleteRenderbuffers) {} }; Czy ktoś może zaproponować bardziej eleganckie rozwiązanie?