来源:远方网络 | 2006-1-6 | (有2071人读过)
上图明确表示了副本领事变量的情况!
下面我们再来看一种情况,就是把返回值赋给引用!
//程序作者:管宁 //站点:www.cndev-lab.com //所有稿件均有版权,如要转载,请务必著名出处和作者
#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);//警告:返回的将是临时变量,pn引用将成为临时变量的别名! cout<<pn; cin.get(); }
float test(float a,float b) { c=a*b; return c; }
float &pn=test(3.0f,1.2f);这句在bc中能够编译通过,因为bc扩展设置为临时变量设置引用,那么临时变量的生命周期将和引用的生命周期一致,但在vc中却不能通过编译,因为一但test()执行过后临时变量消失在栈空间内,这时候pn将成为一个没有明确目标的引用,严重的时候会导致内存出错!
它在内存中的情况见下图!
|