可能重复:
What's the ampersand for when used after class name like ostream& operator <<(…)?
我是C ++的新手,我可能有一个很无聊的问题。我见过这样的事情:
Vector3f & operator = (Vector3f & obj)
{
_item[0] = obj[0];
_item[1] = obj[1];
_item[2] = obj[2];
return *this;
}
我想知道为什么在Vector3f之后会出现&符号(&amp;)。它在做什么样的魔术?我在任何地方都找不到任何解释。最重要的是,上面的内容和
之间有什么区别Vector3f operator = (Vector3f obj)
{
_item[0] = obj[0];
_item[1] = obj[1];
_item[2] = obj[2];
return *this;
}
答案 0 :(得分:2)
第一个通过引用获取Vector3f
,并通过引用返回Vec3torf
。第二个采用并按值返回(即在语义上它创建了参数的副本以及*this
)。
答案 1 :(得分:2)
这是C ++的pass-by-reference&amp; amp ;;返回按引用。它只是意味着参数是来自调用上下文的对象的别名,而不是副本,而且,simillary,返回的对象实际上是*this
,而不是副本。