为什么可以这样写:
#include <iostream>
#include <cstring>
using namespace std;
int & func(int a, int b)
{
// 这里的a, b都是局部变量, 在函数中是不能返回局部变量的引用的
// 但借助三目运算符为什么就可以返回局部变量的引用了?
return a > b ? a : b;
}
int main()
{
cout << func(5, 10) << endl;
return 0;
}
当我在函数中直接 return
局部变量 a
或 b
的时候, 编译器会报错, 说返回了局部变量的引用是不可以的。 但如果我写成三目运算符的形式, 编译器就通过了。这是为什么?
執行下面的代碼,你就會知道。返回局部變量的引用,會有很多不可預期的行爲。