c++ - 返回对 int 的引用与在 C++ 函数中返回 int?

标签 c++ reference return-type

int& returnC() {
    return c;
}

所以我的部分问题已被此处的另一个问题回答,但我仍然有点困惑。所以我知道这会返回一个引用而不是地址。但是这个定义有什么好处,你只是返回 c 为什么不把它定义为:

int returnC() {
    return c;
}

如果它们都返回相同的变量,那么返回对 int 的引用而不只是 int 有什么好处?

如果我这样声明会发生什么:

int& returnC() {
    return &c;
}

谢谢!

最佳答案

按值(value)返回

按值返回是使用起来最简单、最安全的返回类型。当按值返回一个值时,该值的拷贝将返回给调用者。 例如:

int returnC() {
    return c;
}

通过引用返回

就像通过引用传递一样,通过引用返回的值必须是变量(您不能返回对文字或表达式的引用)。当通过引用返回一个变量时,对该变量的引用被传递回调用者。然后调用者可以使用这个引用来继续修改变量,这有时很有用。 通过引用返回也很快,这在返回结构和类时很有用。 例如:

// This struct holds an array of 25 integers
struct MyArrays
{
    int ArrValue[25];
};


// Returns a reference to the nIndex element of rArray
int& Value(MyArrays &rArray, int nIndex)
{
    return rArray.ArrValue[nIndex];
}

int main()
{
    MyArrays objArray;

    // Set the 10th element of objArray to the value 5
    Value(objArray, 10) = 5;

    cout << objArray.ArrValue[10] << endl;
    return 0;
}

关于c++ - 返回对 int 的引用与在 C++ 函数中返回 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22215401/

相关文章:

c++ - C++ 中的多态返回类型

c++ - C++14 赋值中的返回类型推导

ios - 如果将某种类型传递给 Swift 中的函数,如何返回 nil?

java - 返回父类型或子类型之间的区别

c++ - 为什么 "!="与迭代器一起使用而不是 "<"?

c++ - 使用 Autotools (C/C++) 生成可选的源代码?

c++ - 谁能解释一下为什么两个 "results"不同?

c++ - MinGW 无法编译,错误 1

c++ - 常量和非常量函数作为模板参数参数

reference - 当结构及其成员具有不同的生命周期时理解 Rust 中的引用