微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在移动构造函数中什么意思是“成员其他成员”

如何解决在移动构造函数中什么意思是“成员其他成员”

可能我没说清楚

    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 个问题:

  1. member(other.member),otherClass_member(std::move(other.otherClass_member))有什么作用?
  2. 需要这个member=other.member; otherClass_member=std::move(other.otherClass_member);吗?我之所以这么问是因为有些教程有,有些没有。
  1. 如果我有上面的代码,我应该如何处理这个字符串 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 举报,一经查实,本站将立刻删除。