Pytania oznaczone «raii»

257
wyrzucanie wyjątków z destruktora

Większość ludzi twierdzi, że nigdy nie wyrzucaj wyjątków z destruktora - powoduje to nieokreślone zachowanie. Stroustrup podkreśla, że „wektor destruktora jawnie przywołuje destruktor dla każdego elementu. Oznacza to, że jeśli rzuca element destruktor, zniszczenie wektora nie powiedzie się ......

201
Czy muszę ręcznie zamykać ifstream?

Czy muszę ręcznie dzwonić, close()gdy używamstd::ifstream ? Na przykład w kodzie: std::string readContentsOfFile(std::string fileName) { std::ifstream file(fileName.c_str()); if (file.good()) { std::stringstream buffer; buffer << file.rdbuf(); file.close(); return buffer.str(); }...

112
Czy używanie IDisposable i „używanie” jako sposobu uzyskania „określonego zachowania” w celu zapewnienia bezpieczeństwa wyjątków jest nadużyciem?

Coś, czego często używałem w C ++, polegało na tym, że klasa Aobsługiwała stan wejścia i wyjścia dla innej klasy B, za pośrednictwem Akonstruktora i destruktora, aby upewnić się, że jeśli coś w tym zakresie wyrzuci wyjątek, to B będzie miał znany stan, gdy zakres został zamknięty. Nie jest to...