当前位置:  开发笔记 > 编程语言 > 正文

我们应该如何实现对象类型的移动?

如何解决《我们应该如何实现对象类型的移动?》经验,为你挑选了1个好方法。

我正在阅读关于C++ 11中的移动语义,现在我正在尝试理解移动构造函数的实现.假设我们有以下类:

struct A {
    A(){ }
    virtual ~A(){ }
    A(const A&&){ }
};

struct B{
    int i;
    A a;
    virtual ~B(){ }
    B(const B&& b){
        i = b.i;
        i = 0;
        //How to move a??
    }
};

我的问题是如何AB一个体内调用移动构造函数?我会用std::swap,但寻找它我发现了一些描述.参数是左值引用类型,因此它与移动语义无关.该怎么办?



1> John Zwinck..:
B(B&& b)
  : i(b.i)
  , a(std::move(b.a))
{
}

注意参数不再是const(它本来就不应该),并且可以使用初始化列表完成所有初始化以获得最佳效率.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有