使用 reinterpret_cast 变量赋值后可能的析构函数?

Possible destructor after a variable assignment using reinterpret_cast?

我希望这不是一个完全无知的问题,但我似乎找不到关于我遇到的一些代码片段的任何信息。

我就不描述了,举个例子吧:

auto x = reinterpret_cast<T*>(something->data * sizeof(T));
myResult = std::move(*x);
x->~T();

请注意,此代码存在于模板 class 中,因此存在 T

我对reinterpret_cast<>std::move().有一个大致的了解,但是我不太明白x->~T()这个语句是什么意思。比较熟悉C,我认为这是<datatype>()返回值的逻辑非。不过从语法上看,它更有意义——至少对我来说——它是某种析构函数。

如果有人能对此有所了解,我们将不胜感激。

它是一个显式析构函数,通常与placement new结合使用。 Placement new 在已经预先分配的内存中覆盖一个对象(实例化一个对象),然后调用构造函数(see wiki article)。