如何判断我是否正确使用参考



所以我有一个函数,它在向量中设置一个变量,并返回一个可修改的单元格引用。但我不确定我是否使用了引用"&amp正确,因为我有两个有效的例子。示例1:

Cell& Grid::set(const int x, const int y, const Cell & value) {
int index = get_index(x, y);
this->grid[index] = value;
return this->grid[index];
}

Ex2:

Cell& Grid::set(const int x, const int y, const Cell value) {
int index = get_index(x, y);
this->grid[index] = value;
return this->grid[index];
}

哪种方式是正确的?我该如何判断未来?

编辑:单元格是枚举而不是对象

这是value参数的sink函数,因为:

grid[index] = value;

因此,在这种情况下,您应该传递非常值,并将其移动到grid:中

Cell& Grid::set(const int x, const int y, Cell value)
{
grid[get_index(x, y)] = std::move(value);
return grid[index];
}

不过,你应该确保Cell是一个可移动的类型,因为如果不是,它将花费你额外的副本。

这是在接收函数时使用的常见模式。(意思是将自变量存储在比函数调用本身更长寿的地方的函数。(

还可以看看另一个不同问题的相关答案,即通过引用传递何时有益。

最新更新