如果传递的对象没有复杂数据,使用右值引用有什么好处吗?例如,与仅使用引用相比,以下内容是否有任何优势?
class Vector3
{
public:
float X, Y, Z;
Vector3(const Vector2& vector2, float z)
: X(vector2.X), Y(vector2.Y), Z(z)
{
}
// Is this any better than the above?
Vector3(Vector2&& vector2, float z)
: X(std::move(vector2.X), Y(std::move(vector2.Y), Z(z)
{
}
};
最佳答案
我相信你举的例子不会有任何好处。对于 float
等基本数字类型,移动和复制实际上是相同的操作。
关于C++ 右值引用构造函数对简单类型(Vector3、Matrix 等)的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25598060/