采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
这是什么原因导致的
你好,同学。请尽量不要这样提问。如果你要针对代码提问,最好给全一点代码,请尽量不要简单的截图。这样很难分析你的问题。另,你的代码中移动构造逻辑是有些问题的,移动构造直接让渡other里数据掌控权,请仔细对照课程中的代码。
老师,关于移动构造逻辑我是这样考虑的: 如果other让渡数据控制权,而本身又在堆上面分配了空间。直接进行让渡,那本身在堆上的空间会不会发生泄漏;所以如果自己存在,先释放了自己的内存; 而other让渡的空间是不是nullptr,被让渡的对象不关心,既然做出了让渡的操作,就算是nullptr也该让渡过来; 如果真的有让渡nullptr的操作,不等于nullptr会让让渡失败,和代码操作预期不符。 不知道这样考虑对不对
你说的逻辑是针对移动赋值操作的,那样确实是对的。但这里是移动构造函数。在移动构造函数中,由于新创建的对象尚未持有任何资源,因此不需要释放任何资源。只需接管被移动对象的资源,并确保被移动的对象不再指向这些资源。这样做可以防止资源被重复释放。当然了,实事上对于other.m_data是否为nullptr是一个问题,通常按照标准,其实other.m_data为nullptr的情况也是OK的。
登录后可查看更多问答,登录/注册
一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维
1.2k 12
1.3k 10
1.2k 9
991 9