使用参考时出现奇怪的行为

时间:2018-09-12 12:25:59

标签: c++ reference

我正在开发大型代码库。在重构某些代码时,我发现了一些与引用有关的奇怪行为。下面是解释我的问题的最少代码。

#include <iostream>

int main() {
  // case 1
  {
    int start = 1;
    const int &eRef = start > 0 ? start : 9;
    start = 2;
    std::cout << start << eRef;
  }
  std::cout << std::endl;
  // case 2
  {
    int start = 1;
    int end = 9;
    const int &eRef = start > 0 ? start : end;
    start = 2;
    std::cout << start << eRef;
  }
  std::cout << std::endl;
  return 0;
}

以上代码的输出为

  

21

     

22

我期望两种情况下的输出22。但是两种情况下的输出都不同。

这可能是按照标准进行的,但我想知道其背后的原因。

0 个答案:

没有答案