所以我有一个函数,它在向量中设置一个变量,并返回一个可修改的单元格引用。但我不确定我是否使用了引用"&正确,因为我有两个有效的例子。示例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
是一个可移动的类型,因为如果不是,它将花费你额外的副本。
这是在接收函数时使用的常见模式。(意思是将自变量存储在比函数调用本身更长寿的地方的函数。(
还可以看看另一个不同问题的相关答案,即通过引用传递何时有益。