int f(int x){return x;}
正如您所知,您无法将引用分配给此临时整数:
int& rf=f(2);// this will give an error
但是如果我像这样重新定义我的函数f:
int& f(int x){return x;}
f(2);// so now f(2) is a reference of x, which has been destroyed
所以我的问题是:编译器如何不允许你创建一个对语句后将被销毁的临时变量的引用(在第一种情况下),而另一方面,它允许你创建一个对
x
的引用f(2),尽管编译器知道这个变量会在return
之后被销毁。