Я экспериментировал с деструкторами в C++ с помощью этого фрагмента кода :
#include <iostream>
struct temp
{
~temp() { std::cout << "Hello!" << std::endl; }
};
int main()
{
temp t;
t.~temp();
}
. Я вижу, что "Привет!" печатается дважды. Разве вызов деструктора не должен освобождать объект, и деструктор не должен вызываться снова, когда он выходит за пределы области видимости? Или есть какая-то другая концепция?
(Я не собираюсь делать это на практике. Я просто пытаюсь понять, что здесь происходит.)