使用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();
注意,这段代码存在于模板类中,因此T
。
我对reinterpret_cast<>
和std::move().
有一个大致的了解,但是我不太明白x->~T()
的意思。由于更熟悉C
,我认为这是<datatype>()
返回值的逻辑不。不过,从语法上看,至少对我来说,它是某种析构函数更有意义。
如果有人能解释一下,我将不胜感激。
这是一个显式析构函数,通常与位置new一起使用。放置new会在预分配的内存中覆盖对象(实例化对象),然后调用构造函数(参见wiki文章)。
相关文章:
- 在Visual Studio中,与std::async一起使用时不调用"thread_local"变量"析构函数,这是一个错误吗?
- 使用线程销毁类析构函数中的shared_ptr成员变量
- 为什么不调用全局静态变量的析构函数
- cpp 中的析构函数是否自动调用?即使析构函数没有提及非动态变量,它们也会被删除吗?
- 返回堆栈变量时停止调用析构函数
- 如何使用非平凡析构函数防止未使用的变量警告
- 如何释放C++异常类析构函数中的变量
- 为什么msvc编译器在显式调用析构函数时会发出未使用的变量
- 当变量仍然存在时调用C++析构函数
- 为静态分配的变量手动调用析构函数
- 人造人.NDK.如何记录全局变量的调用析构函数
- 在析构函数调用后访问成员变量
- 为什么析构函数不修改返回的变量
- 从静态变量引用非静态变量会使非静态变量先于静态变量进行析构函数
- 在C++中,析构函数的调用顺序和成员变量的销毁顺序是什么
- 对变量范围感到困惑 - 析构函数意外调用
- 您是否需要析构函数来销毁全局 int、float 或 std::string 变量
- 全局变量析构函数中的 ctrl-c 上的 AV
- C++禁用静态变量的析构函数
- 析构函数在(堆栈)变量之间的赋值时调用