In C++, what does & mean after a function's return type?

后端 未结 11 1499
情歌与酒
情歌与酒 2020-11-29 23:49

In a C++ function like this:

int& getNumber();

what does the & mean? Is it different from:

int getNumb         


        
11条回答
  •  甜味超标
    2020-11-30 00:19

    It's different.

    int g_test = 0;
    
    int& getNumberReference()
    {
         return g_test;
    }
    
    int getNumberValue()
    {
         return g_test;
    }
    
    int main()
    {
        int& n = getNumberReference();
        int m = getNumberValue();
        n = 10;
        cout << g_test << endl; // prints 10
        g_test = 0;
        m = 10;
        cout << g_test << endl; // prints 0
        return 0;
    }
    

    the getNumberReference() returns a reference, under the hood it's like a pointer that points to an integer variable. Any change applyed to the reference applies to the returned variable.

    The getNumberReference() is also a left-value, therefore it can be used like this:

    getNumberReference() = 10;
    

提交回复
热议问题