我有一个函数,当我尝试编译它时出现错误“无法从‘int’转换为‘int &’”。
int& preinc(int& x) {
return x++;
}
如果我用 x 替换 x++,它会编译,但我不确定这有什么不同。我认为 x++ 在递增 x 之前返回 x,所以对于 preinc 返回的内容,“return x++”不应该与“return x”相同吗?如果问题出在作用于 x 的++ 运算符上,那么如果我在 return 语句之前或之后放置“x++”行,或者将 x++ 替换为++x,为什么它不会产生任何错误?
最佳答案
x++
创建原始拷贝的临时拷贝,递增原始拷贝,然后返回临时拷贝。
因为您的函数返回一个引用,您正试图返回对临时拷贝的引用,该拷贝是函数的本地引用,因此无效。
关于c++ - C++ 中的引用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6291749/