请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答 回答被采纳积分+3

1回答

quickzhao 2023-12-21 09:50:42

你好,同学。请尽量不要这样提问。如果你要针对代码提问,最好给全一点代码,请尽量不要简单的截图。这样很难分析你的问题。另,你的代码中移动构造逻辑是有些问题的,移动构造直接让渡other里数据掌控权,请仔细对照课程中的代码。

0 回复 有任何疑惑可以回复我~
  • 提问者 weixin_慕仔7197815 #1
    老师,关于移动构造逻辑我是这样考虑的:
    如果other让渡数据控制权,而本身又在堆上面分配了空间。直接进行让渡,那本身在堆上的空间会不会发生泄漏;所以如果自己存在,先释放了自己的内存;
    而other让渡的空间是不是nullptr,被让渡的对象不关心,既然做出了让渡的操作,就算是nullptr也该让渡过来;
    如果真的有让渡nullptr的操作,不等于nullptr会让让渡失败,和代码操作预期不符。
    
    不知道这样考虑对不对
    回复 有任何疑惑可以回复我~ 2023-12-21 10:21:11
  • quickzhao 回复 提问者 weixin_慕仔7197815 #2
    你说的逻辑是针对移动赋值操作的,那样确实是对的。但这里是移动构造函数。在移动构造函数中,由于新创建的对象尚未持有任何资源,因此不需要释放任何资源。只需接管被移动对象的资源,并确保被移动的对象不再指向这些资源。这样做可以防止资源被重复释放。当然了,实事上对于other.m_data是否为nullptr是一个问题,通常按照标准,其实other.m_data为nullptr的情况也是OK的。
    回复 有任何疑惑可以回复我~ 2023-12-21 11:19:01
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信