You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否需要删除On_heap模板类中的移动构造函数与移动赋值运算符?

On_heap是否必须删除移动构造函数和移动赋值运算符?

先看你给出的On_heap实现:它通过原始指针管理堆上的T对象,析构函数负责释放指针指向的内存,并且已经显式删除了拷贝构造和拷贝赋值运算符。

核心结论:不是必须的

根据C++标准,当一个类显式删除了拷贝构造函数和拷贝赋值运算符时,编译器不会自动生成移动构造函数和移动赋值运算符。也就是说当前的On_heap类型本身就没有默认的移动操作,不会出现移动后原对象和新对象持有同一块内存、最终导致重复释放的问题。

可选的增强手段

如果从代码可读性和防御性编程的角度考虑,可以显式删除移动构造和移动赋值:

On_heap(On_heap&&) = delete;
On_heap& operator=(On_heap&&) = delete;

这么做能更直白地向其他开发者传递“这个类型既不能拷贝也不能移动”的设计意图,但这属于锦上添花的操作,不是语言层面的强制要求。

内容的提问来源于stack exchange,提问作者MBagher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 08:14:52