Я думаю о том, что стек раскручивается, когда здесь брошено исключение. В приведенном ниже простом примере, когда Throw 505 выполняется, из того, что я понимаю, стек начинает раскручиваться, пока он не найдет блок улова, вызывая деструкторы на каждом объекте, созданный с начала блока Try. Я немного смущен тем, что происходит под капюшоном здесь. < /P>
class MyClass1
{
public:
MyClass1(){}
~MyClass1(){}
private:
int num1 = 1;
int num2 = 2;
};
class MyClass2
{
public:
MyClass2(){}
~MyClass2(){}
private:
int num1 = 3;
int num2 = 4;
};
int main()
{
try
{
MyClass1 mc1;
MyClass2 mc2;
throw 505; // Desctructors for mc1 and mc2 will get called, but how exactly?
}
catch (int myNum)
{
}
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... he-stack-c