今天在我的CS课上,老师向我们展示了函数和模板的一些例子,函数的一些原型在参数列表中有&ampersands,如下所示:
void exchange( T & x, T & y ) ; // prototype
这是什么意思?我应该用它做什么?
答案 0 :(得分:4)
在函数/方法调用中使用它们时,便宜,因为在函数调用中不需要复制该对象。您仍然使用与复制对象相同的语法。使用指针你需要处理特殊情况,指针是 NULL 。
这是使用它们的通常原因。如果我猜对了,交换就意味着交换两个对象x和y ,那么函数调用的成本与应对对象的成本直接相关,所以保存一些副本可能是一个相关的优化。
答案 1 :(得分:0)
&
表示'引用' - x
是对T
的引用,而非副本。