给定程序是一个引用返回类型,我无法理解它。请逐行解释程序。
#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 :(得分: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
。