函數返回值是引用類型,此函數當左值、右值


函數的返回值當左值,則需要返回引用類型。左邊必須是一塊內存,來承接右邊的值。

函數返回值是引用,返回的是變量本身,即變量的內存。

這個變量必須是靜態的或全局的,防止函數之外內存消亡。

#include <iostream>
using namespace std;

int func()
{
    int a=10;
    a++;
    return a;
}
int& func1()//函數返回值是引用,返回的是變量本身,即變量的內存
{
    static int a=10;//靜態變量或者全局變量
    a++;
    return a;
}
int main()
{
    int x,y;
    x=func();//等效於x=11,注意func()中a的內存已經消亡。
    y=func1();//函數做右值,等效於y=a,a是11。注意func1()中a的內存仍然存在。
    func1()=20;//函數做左值,等效於a=20,注意a由12變成20。func1()每出現一次,a就增1。
    cout << x <<" " <<y<<endl;
    cout<<func1()<<endl;//再次增1,輸出21
    return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM