KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I used to think that in C++, if a constructor throws an exception, the destructor of this "partially constructed" class is not called. But it seems that it is not true anymore in C++11: I compiled the following code with g++ and it prints " X destructor " to the console. Why is this? #include <exception> #include <iostream> #include <stdexcept> using namespace std; class X { public: X() : X(10) { throw runtime_error("Exception thrown in X::X()"); } X(int a) { cout << "X::X(" << a << ")" << endl; } ~X() { cout << "X destructor" << endl; } }; int main() { try { X x; } catch(const exception& e) { cerr << "*** ERROR: " << e.what() << endl; } } Output Standard out: X::X(10) X destructor Standard error: *** ERROR: Exception thrown in X::X()
Tags (comma-separated)
Save Edits
Cancel