函数返回引用类型和非引用类型的区别 返回值为引用类型的函数某些情况下可作为表达式的左值,而非引用的则一般不可以。函数返回值若为引用类型,当返回的是函数的引用形参时,则是对函数外的变量的引用,函数可以作为表达式的左值(被赋予新值)。而当函数返回的是非引用类型时,返回的值是函数内隐式生成的临时变量,当函数结束析构时释放,函数作为左值被赋予新值没有意义或产生错误。(例外情况,当返回的是函数中用new等动态内存分配函数建立的指针时,可作为左值。注:“引用类型”并非是一种新的类型,也没有这种类型,只是为了口头上的方便说的,是对某某类型变量的引用的个人说法。
关于函数返回类型是引用类型的问题!!谢谢 返回值是非引用的时候就是直接把局部变量的值在return的时候复制给临时变量,然后你可以接收这个函数的返回值。而引用类型返回的内容相当于返回了一个*(&变量)的结果,由于局部变量在函数运行完毕之后这个变量的空间已经被释放了,你再去取这个地址的时候这块内存的内容就是不确定的了,所以没有办法获得正确的结果。
什么情况下成员函数返回类型为引用类型,有什么作用 需要作左值使用时要返回引用。如一个类重载+操作符,如果返回临时变量,则+操作符不能用在左边。求采纳!
什么是“一个返回值为引用类型的函数”。要求:1)讨论return后面变量的选取;2)对左值概念的理解(从程序中反应出来)返回引用可以作为左值,返回值只能作为右值。。
返回值为引用类型的函数,如果return一个局部变量。编译会通过吗? C++编译器不提倡返回被调函数内局部变量的引用。可以编译通过,但是可能会给个“小小”的警告
函数返回值 是一个 数组下标 算什么类型 为什么函数是引用类型&? 第一个问题,get返回的是整形数组元素,不是下标!这和get是一个整形引用是一致的。第二个问题,main中调用的get,如get(ia,i),引用的就是 ia[i]。main里面定义了int ia[10],因此 ia的所有元素当然都是初始化(哪怕是编译器随机赋值)过和分配空间的。
一个成员函数的返回值类型为引用类型和常值引用类型有什么不同
看c++,书里面有一句关于函数返回引用类型的话不太明白 自动变量的空间是在堆栈中,随着函数结束,这部分空间会释放。之所以没有出错,是因为在返回以后,自动变量在堆栈中的空间虽然释放了,但是还没有被其他数据破坏。你可以试一下这样写:float&display(){float a;a=9.0f;return a;}float&g_a=display();void main(){cout;}a在堆栈中的值被g_a引用,但因为堆栈被主函数破坏,输出的就是一个不确定的值(虽然在同一个编译器下的多次执行结果可能是一样的)。但你把g_a放在main函数体内,通常不会出错。除非是有些编译器故意在释放空间后破坏释放空间中的值(这种暂时看不出来的错误是很可怕的)。
const成员函数返回的引用类型,一定是const?