Home
Code-Blog
Projects
Twitter
Blog
Links / Books
About
|
Websites |
Exceptions in constructorsEverything you need to know about exceptions in the class constructor is: If you throw an exception in your constructor, your destructor will never be called. Everything else is done automatically for you. So: class X { Object * m_p1; Object * m_p2; //don't do this X() { m_p1 = new Object; m_p2 = new Object; // LineB } //do this! X() { std::auto_ptr<Object> sp1(new Object); std::auto_ptr<Object> sp2(new Object); m_p1 = sp1.release(); m_p2 = sp2.release(); } ~X() { delete m_p1; delete m_p2; } };
Why the first one is wrong? Is it a good idea to throw in constructor? Yes. Because you will have a simpler class invariant
|