我们正在课堂上使用 RVO 来展示我们如何减少创建的临时对象的数量。
我了解了它的基础知识,但我很难理解如何将多个值组合成一行。
对于单一的临时优化,我能够相当容易地理解它
const A operator + ( const A &tmp)
{
A sum;
sum = this->x + tmp.x;
return sum;
}
可以简化为:
const A operator + ( const A &tmp)
{
return A(this->x + tmp.x);
}
但是我不确定如何将它应用于具有多个要返回的值的函数。例如:
Vect2D operator - ( const Vect2D &tmp ) const;
Vect2D Vect2D::operator - ( const Vect2D &tmp ) const
{
Vect2D sum;
sum.x = this->x - tmp.x;
sum.y = this->y - tmp.y;
return ( sum );
};
我背后的过程是:
Vect2D Vect2D::operator - ( const Vect2D &tmp ) const
{
return Vect2D((this->x - tmp.x), (this->y - tmp.y));
};
它返回一个错误告诉我“ no argument takes the value (float, float)
”。
我需要重新组织最初的
Vect2D 运算符 - ( const Vect2D &tmp ) const;
取两个浮点参数?还是我以错误的方式思考这个问题?
谢谢,
E:感谢 Matt 和 Jerry 确认我认为我需要对双浮点运算符做些什么。