如何解决在移动构造函数中什么意思是“成员其他成员”
可能我没说清楚
class Class {
int member;
otherClass otherClass_member;
Class() { ... }
Class(int x) { ... }
Class(const Class &other) { ... }
Class(Class &&other) : member(other.member),otherClass_member(std::move(other.otherClass_member)) {
member=other.member;
otherClass_member=std::move(other.otherClass_member);
other.member=0;
//other.otherClass_member = ???;
}
~Class() { ... }
我有 3 个问题:
- 这
member(other.member),otherClass_member(std::move(other.otherClass_member))
有什么作用? - 需要这个
member=other.member; otherClass_member=std::move(other.otherClass_member);
吗?我之所以这么问是因为有些教程有,有些没有。
解决方法
这是做什么member(other.member)
,
otherClass_member(std::move(other.otherClass_member))
?
这些初始化您正在构造的对象的成员。如果 std::move()
具有移动构造函数,则使用 other
允许窃取现有对象 otherClass
的资源。
是否需要这个member=other.member;
otherClass_member=std::move(other.otherClass_member);
?
它不仅不需要这个,而且会出错,因为您会move
other.otherClass_member
两次。您可以使用这些语句代替上面的初始化,但这是一个次等的选择,并且只有在 otherClass
具有默认构造函数时才有可能。
如果我有上面的代码,我应该如何处理这个字符串
other.otherClass_member = ???
;
你根本不需要它。 otherClass
的移动构造函数应该处理这个(如果移动构造函数不存在,则复制构造函数)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。