值传递与引用传递例子

int val() 

     int i = 1; 
     return i; 

int & ref() 

     int i = 1; 
     return i; 

  
int main() 

     int   vv = val(); 
     int & rv = val(); 
     int   vr = ref(); 
     int & rr = ref();     

区别和问题: 
      int   vv = val(); // int <= int;  没有问题,值传递 
      int & rv = val(); // int& <= int;或int& <= const int&;  编译错误 
      int   vr = ref(); // int <= int&;  引用为普通变量赋值,没有问题。但是ref()返回退栈后的变量,有可能造成数据失效。 
      int & rr = ref(); // int& <= int&;  赋值语法正确,但执行后rr引用退栈后的变量,极易造成访问冲突,隐患最大。 

posted @ 2011-12-14 09:54  magicdog  阅读(248)  评论(0)    收藏  举报