接下来我们说几个利用引用作为左值参与计算的例子,这一点一非常重要,对于理解返回引用的函数是非常有帮助的。 #include <iostream> #include <string> using namespace std; float c; float& test(float,float); void main(int argc,char* argv[]) { float &pn=test(3.0f,1.2f); cout<<pn<<endl; test(3.0f,1.2f)=12.1;//把函数作左值进行计算! cout<<pn; cin.get(); } float &test(float a,float b) { c=a*b; return c; } 通常来说函数是不能作为左值,因为引用可以做为左值,所以返回引用的函数自然也就可以作为左值来计算了。 在上面的代码中:
float &pn=test(3.0f,1.2f);
进行到这里的时候pn已经指向到了目标c的地址了。
接下来运行了
test(3.0f,1.2f)=12.1;
把函数作左值进行计算,这里由于test是返回引用的函数,其实返回值返回的地址就是c的地址,自然c的值就被修改成了12.1。
|