Деструктор вызывается дважды при явном вызове

Я экспериментировал с деструкторами в C++ с помощью этого фрагмента кода :

#include <iostream>

struct temp
{
    ~temp() { std::cout << "Hello!" << std::endl; }
};

int main()
{
    temp t;
    t.~temp();
}

. Я вижу, что "Привет!" печатается дважды. Разве вызов деструктора не должен освобождать объект, и деструктор не должен вызываться снова, когда он выходит за пределы области видимости? Или есть какая-то другая концепция?

(Я не собираюсь делать это на практике. Я просто пытаюсь понять, что здесь происходит.)

22
задан Baum mit Augen 6 March 2018 в 11:53
поделиться