#include <iostream>
#include <string>
using namespace std;
class Base
{
public:
Base()
{
cout << "Base"<<endl;
}
~Base()
{
cout << "~Base"<<endl;
}
};
class Child: public Base
{
public:
Child()
{
cout << "Child"<<endl;
}
~Child()
{
cout << "~Child"<<endl;
}
};
int main()
{
try
{
Child cc;
}
catch(...)
{
}
return 0;
}
一般输出将是
Base
Child
~Child
~Base
但是,如果在 Base 是构造函数时捕获了一些可怕的或异常,那么序列是否可能是:
Base
~Base
Child
~Child
任何人都可以写一个演示来说明这一点吗?C++ 通常不会在构造函数中抛出异常,但如果是,那么它会导致该输出吗?
感谢大家的帮助。我不确定在通常的代码中是否会发生这种情况。是否有可能在复杂的 Base 构造函数或错误之类的东西中改变通常的输出?如果是这样,谁能给我一个例子?