san*_*ank 2 c++ inheritance exception
#include <iostream>
class A
{
public:
A()
{
std::cout << "A()" << std::endl;
}
virtual ~A()
{
std::cout << "~A()" << std::endl;
}
};
class B:public A
{
public:
B()
{
throw std::exception();
std::cout << "B()" << std::endl;
}
~B()
{
std::cout << "~B()" << std::endl;
}
};
int main()
{
try
{
B b;
}
catch(std::exception & e)
{
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码输出,
A()
~A()
Run Code Online (Sandbox Code Playgroud)
抛出异常时,已创建B.那么为什么B的析构函数不被称为?