f()如何在标题中的给定程序中返回引用

时间:2014-12-25 10:43:22

标签: c++

给定程序是一个引用返回类型,我无法理解它。请逐行解释程序。

 #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; 
 }

提前致谢

1 个答案:

答案 0 :(得分:1)

一开始,f()​​被声明为返回 对double的引用,并将全局变量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

f( )返回的val引用用于将val的值分配给newval。 程序中最有趣的一行如下所示:

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

此语句使val的值更改为99.1。原因如下:自从 f( )返回对val的引用,此引用成为分配的目标 声明。因此,通过参考间接地将99.1的值分配给val 它由f()返回。

最后,在这一行

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

当调用返回对val的引用时,将显示val的新值 f( )声明中的cout