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

Possible destructor after a variable assignment using reinterpret_cast?

本文关键字:析构函数 变量 reinterpret cast 赋值 使用      更新时间:2023-10-16

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

为了不描述它,我只举一个例子:

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

注意,这段代码存在于模板类中,因此T

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

如果有人能解释一下,我将不胜感激。

这是一个显式析构函数,通常与位置new一起使用。放置new会在预分配的内存中覆盖对象(实例化对象),然后调用构造函数(参见wiki文章)。