Tag: 堆栈展开

为什么析构函数不被exception调用?

我期望在这个程序中调用A::~A() ,但它不是: #include <iostream> struct A { ~A() { std::cout << "~A()" << std::endl; } }; void f() { A a; throw "spam"; } int main() { f(); } 但是,如果我改变最后一行 int main() try { f(); } catch (…) { throw; } 那么A::~A() 被调用。 我正在编译Visual Studio 2005中的“Microsoft(R)32位C / C ++ Optimizing Compiler Version 14.00.50727.762 for 80×86”。命令行是cl […]