c ++在if语句中分配参考变量

时间:2019-02-03 13:18:40

标签: c++ reference

如何基于if语句分配引用变量?

例如,下面的示例不起作用,因为“更小”的范围不在if语句之外。

int x = 1;
int y = 2;
if(x < y)
{
    int & smaller = x;
}
else if (x > y)
{
    int & smaller = y;
}
/* error: smaller undefined */

但是,下面的示例也不起作用,因为必须立即将引用分配给对象。

int x = 1;
int y = 2;
int & smaller; /* error: requires an initializer */
if(x < y)
{
    smaller = x;
}
else if (x > y)
{
    smaller = y;
}

我可以用三元if语句实现引用分配,但是如果我不能使用它呢?

1 个答案:

答案 0 :(得分:1)

使用功能

int &foo(int &x, int &y) {
  if(x < y)
  {
    return x;
  }
  else if (x > y)
  {
    return y;
  } else {
    // what do you expect to happen here?
    return x;
  }
}

int main() {
  int x = 1;
  int y = 2;
  int & smaller = foo(x, y); /* should work now */
}

请注意,在您的情况下,我什至希望foo返回一个const int&,因为修改标识为较小的值似乎很奇怪,但是您在问题中没有使用它const ,我会这样保存。