定义C ++移动构造函数和移动赋值运算符

时间:2018-07-18 21:09:13

标签: c++ move

我是C ++的新手,我正在研究如何使用move构造函数和move赋值提高代码效率。但是对于移动语义,我还有一些不清楚的问题:

1。我必须自己声明move构造函数和赋值吗?我看到很多关于何时隐式声明move构造函数的条件,但假设我声明了以下内容

SomeClass(SomeClass && other) = default

我应该隐式获得一个可用的move构造函数吗?

2。隐式声明的move构造函数做什么?它是否只是简单地一对一地调用其成员类的move构造函数?而且我假设总是对基本类型(例如int)执行复制操作。

3。为什么C ++不能简单地整体移动类,而不是逐个移动实例变量?例如,如果我有一个课程

SomeClass {
private:
    Class1 member1;
    Class2 member2;
    Class2 member3;
}

然后C ++会逐一移动Class1,Class2,Class3吗?如果C ++整体移​​动SomeClass指针,听起来会简单很多。

0 个答案:

没有答案