返回引用事实上是返回变量的地址。
    所谓的不可以返回局部变量的引用或指针,
    
     指的是不能返回局部变量的引用或地址给引用或指针
    
    。事实上还是看该地址的位置是否在该函数的栈区,若是在栈区,函数调用结束,该地址就被释放了。尽管会出现栈地址上的值没被销毁的问题,可能是该栈区还没被其他的函数堆栈掉。
   
    1、
    
     int  & fun()
    
   
    
     {
     
    
   
    
     int a = 10;
    
   
    
     return a;
    
   
    
     }
    
    
    
   
不可以,尝试返回 a 的地址给引用变量,a是存在栈里的,函数结束调用栈被销毁。
	std::string  & getstr()
	{
        //1 不可以,虽然buffer是在字符常量区,但是这个函数返回的是string类型,string对象还在栈上
		char *buffer = "abcdef";
		return std::string(buffer);
        //2
		//string str = "1213";
		//return str;
	}
    2、
    
     int  * fun()
    
   
    
    
   
 
版权声明:本文为u010177010原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。