所以 Move 语义很棒,给了我们更高的性能。
我读到这是一个全新的功能,如果没有 C++11,这是“不可能”做到的。
但是我们可以在 C++11 之前做到这一点吗?就像下面这样的东西。
class AAA
{
private:
int* m_data;
public:
AAA(int _data) : m_data(new int(_data)) { }
AAA(AAA& _other) // Not using RValue reference.
{
m_data = _other.m_data;
_other.m_data = nullptr;
}
~AAA() { delete m_data; }
};
int main()
{
AAA sth1(100);
AAA sth2(sth1)
return 0;
}
我认为 RValue 引用的存在不是为了制作参数略有不同的相同函数(如 Const 和 Non-Const)。
简单地说,RValue 引用只是另一种“类型”,我们可以同时执行 Copy 构造函数和 Move 构造函数。就是这样。
想知道我是正确的还是遗漏了一些巨大的东西。
提前致谢。