您需要定义移动构造函数以防止从移动的对象中删除:
foo(foo&& f): i(f.i) { f.i = nullptr; }
现在,当运行旧对象的析构函数时,它不会删除i
,因为删除空指针是一个无操作.
您还应定义移动赋值运算符并删除复制赋值运算符.
您需要定义移动构造函数以防止从移动的对象中删除:
foo(foo&& f): i(f.i) { f.i = nullptr; }
现在,当运行旧对象的析构函数时,它不会删除i
,因为删除空指针是一个无操作.
您还应定义移动赋值运算符并删除复制赋值运算符.