我希望这不是一个完全无知的问题,但我似乎无法找到关于我遇到过的几段代码的任何信息。
不是描述它,我只是举个例子:
auto x = reinterpret_cast<T*>(something->data * sizeof(T));
myResult = std::move(*x);
x->~T();
请注意,此代码存在于模板类中,因此T
。
我对reinterpret_cast<>
和std::move().
有一般性了解但是,我并不完全理解x->~T()
语句的含义。由于更熟悉C
,我认为这与<datatype>()
的返回值不符合逻辑。然而,看一下语法,至少对我来说更有意义 - 它是某种类型的析构函数。
如果有人能够对此有所了解,我们将不胜感激。
答案 0 :(得分:1)
它是一个显式的析构函数,它通常与placement new一起使用。 Placement new覆盖已预先分配的内存中的对象(实例化对象),然后调用构造函数(see wiki article)。