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

标签 c++ destructor reinterpret-cast

<分区>

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

与其描述它,我举个例子:

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

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

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

如果有人能阐明这一点,我们将不胜感激。

最佳答案

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

关于c++ - 使用 reinterpret_cast 变量赋值后可能的析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31662256/

相关文章:

c++ - 我什么时候应该为我的类(class)提供析构函数?

c++ - C++ 中的越界数组访问和 reinterpret_cast

c++ - 丢弃指针上的标志是否合法?

c++ - 实现手写动态数组的插入数组方法 - C++

c++ - 如何将 fusion 容器大小限制扩展到 50 以上?

c++ - Boost 共享指针数组

c++ - 如何调用模板类的析构函数?

python - 提升 Python,将 C++ 回调传播到导致段错误的 Python

c++ - 类中的析构函数

c++ - 什么类型的转换从 parent 到 child ?