Il seguente esempio lasciare una possibile perdita di memoria perché il distruttore non viene eseguito per l'oggetto su cui viene gestito l'eccezione durante il costruttore viene eseguito. dove gestisco questa perdita di memoria?Facendo eccezioni nel costruttore
#include <exception>
class MyClass {
public:
MyClass()
{
c = new char[5];
throw std::runtime_error("test");
}
~MyClass()
{
delete[] c;
}
private:
char *c;
};
int main()
{
try
{
MyClass Obj;
}
catch (std::runtime_error)
{
}
}
Che cosa richiede questo downgrade? RAII è il modo migliore per farlo e, se qualcuno dice diversamente, non è corretto. Se ti senti responsabile di Downvote, sentiti abbastanza responsabile da spiegarci perché? E se non puoi e semplicemente * senti * questo è sbagliato, allora non sei qualificato per fare downvoting, lascia che sia qualcun altro a farlo. –
è questa soluzione basata su roba relativa al C++ 11? – user103214
No, questo è C++ 03. –