2014-12-25 31 views
-7

工作給定的程序是一個參考返回類型,我不明白it.Please逐行解釋程序。如何f()在給定的程序在標題返回參考

#include <iostream> 
using namespace std; 
double &f(); 
double val = 100.0; 
int main() 
{ 
    double newval; 
    cout << f(); 
    newval = f(); 
    cout << newval; 
    f() = 99.1; 
    cout << f(); 
    return 0; 
} 
double &f() 
{ 
    return val; 
} 

在此先感謝

+0

你有關於C++的好書嗎?如果是這樣,它應該有一個參考部分。 'f()'只是一個返回對double的引用的函數 - 在這個例子中它只是返回一個對全局變量'val'的引用。 –

+2

「給出的程序是一個參考返回類型」 - 我的人類文本解析器剛剛崩潰... –

回答

1

在開始的時候,F()聲明爲返回 的雙基準,以及全球變量val被初始化爲100。接下來, 下面的語句顯示val的原始值:

cout << f() << '\n'; // display val's value 

當調用f()時,它會返回對val的引用。因爲f()被聲明爲返回 基準,線

return val; // return reference to val 

自動返回到val的參考。這個參考被cout 語句用來顯示val的值。 在線路

newval = f(); // assign value of val to newval 

到VAL由f()返回的引用是用來的val值分配給newval。 在節目中最有趣的線如下所示:

f() = 99.1; // change val's value 

這種說法引起改爲99.1 val的值。原因如下:由於 f()返回對val的引用,因此此引用將成爲分配 語句的目標。因此,通過引用 將99.1的值間接地分配給val,以f()返回。

最後,在這條線

cout << f() << '\n'; // display val's new value 

當通過調用返回到 f()爲val的引用cout語句中顯示val的新值。

+0

感謝非常好的解釋超出預期 – gru