Может кто-нибудь объяснить здесь, как деструктор вызывается для объекта, созданного в куче через оператор new, когда не вызывается соответствующее удаление.Кроме того, поскольку в приведенном ниже коде мы перехватываем объект с помощью константной ссылки, а в деструкторе мы меняем значение объекта (т. Е. Устанавливаем n = 0), как это возможно.
class A
{
private:
int n;
public:
A()
{
n=100;
std::cout<<"In constructor..."<<std::endl;
}
~A()
{
n=0;
std::cout<<"In destructor..."<<std::endl;
}
};
int main()
{
try
{
throw *(new A());
}
catch(const A& obj)
{
std::cout<<"Caught...."<<std::endl;
}
return 0;
}
Вывод из программы (работает наhttp://cpp.sh/3jm4x):
In constructor...
Caught....
In destructor...