nya*_*108 6 c++ destructor c++11 move-assignment-operator
在定义定制的析构函数时,C++标准委员会选择删除隐式定义的移动赋值运算符的理由是什么?
这个想法是任何默认生成的结构(复制构造函数,复制赋值或析构函数)的存在表明类型需要进行某种特殊的资源管理.如果是这种情况,默认移动操作可能不会做正确的事情.我不确定实际上是否存在默认生成的复制构造函数正常工作但是默认生成的移动构造函数失败的示例.
解决方案是默认情况下不生成移动操作更安全,特别是因为很容易要求相应的移动操作:只需添加一个= defaulted实现.无论如何,这个班级显然已经做了一些特别的事情(否则就没有破坏者).
| 归档时间: |
|
| 查看次数: |
193 次 |
| 最近记录: |