【发布时间】:2017-02-27 12:00:38
【问题描述】:
看下面的代码,函数通过引用返回:
#include <cstdio>
using namespace std;
int & myFunction(int & input) {
return input;
}
int main() {
int x;
int y = 10;
x = myFunction(y);
printf("x is %d\n",x); // x is 10
printf("y is %d\n",y); // y is 10
x = 20;
printf("x is %d\n",x); // x is 20
printf("y is %d\n",y); // y is 10
return 0;
}
除了返回对函数局部变量的引用的明显缺陷(这里不是这种情况),在这种设置中还有什么需要注意的吗?换句话说,除了一个简单地通过引用返回内容以避免不必要的复制操作的函数之外,这段代码还有什么“更多”的东西吗?
【问题讨论】:
-
对不起,我没有发现。这个案子没问题。
-
不,仅此而已。事实上,它经常使用 > 操作符
-
"一个简单地通过引用返回内容以避免不必要的复制操作的函数" 是这种情况,还是您暗示将这样做作为一种优化?因为通常它是为语义而做的,而不是过早地优化。
-
没问题,在其他地方做。就像@UKMonkey 说的流操作符一样。例如这里:en.cppreference.com/w/cpp/string/basic_string/operator_ltltgtgt
-
此代码类似于 std::ostream 的标准运算符
标签: c++ reference pass-by-reference return-by-reference