我是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指针,听起来会简单很多。