gpt4 book ai didi

c++ - C++ 中的运算符重载 - 为什么我们需要将参数作为 const & (...) 传递?

转载 作者:行者123 更新时间:2023-11-30 02:50:59 24 4
gpt4 key购买 nike

假设我想重载一个运算符 ==。我有一个类 vector 和以下方法:

bool operator ==( const Vector & v )
{
if(( this->x == v.x ) &&( this->y == v.y ) )
return true;
else
return false;

}

为什么我需要将一个对象(在本例中为 v)作为常量地址传递给该对象?我知道 - const 强制程序员不要修改传递的对象,但为什么 &?

我的第二个问题涉及运算符重载,例如 +=、*= 等。请看这段代码:

Vector operator +( const Vector & v )
{
return Vector( this->x + v.x, this->y + v.y );
}

// vs
Vector & operator +=( const Vector & v )
{
this->x += v.x;
this->y += v.y;
return * this;
}

在第二种情况下,我们也可以返回一个新对象。为什么我们返回相同的递增对象?

最佳答案

您不必这样做,只是希望避免不必要地复制对象。

对于你的第二个问题,同样你不必这样做,但它使 += 对 Vector 的操作与对 int 或 double 的操作类似

关于c++ - C++ 中的运算符重载 - 为什么我们需要将参数作为 const & (...) 传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20016839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com