连云港赣榆很穷吗:请问高手:关于局部变量

来源:百度文库 编辑:中科新闻网 时间:2024/04/30 14:16:54
函数内定义的变量有的是不能作为返回值返回的。那末,高手能否赐教:那些局部变量不能作为返回值。最好能将c,c++,java,c#分别讲一下,谢谢!!
对于以下c++程序,在某教程(清华出版社)中的范例:
void fun2()
{
Point p(1,2);//Point 之前已定义
return p;
}
返回p是否存在问题??

首先,是不是应该这样
Point fun2()
{
Point p(1,2);//Point 之前已定义
return p;
}

那么我么来看看,在C++中 Point p(1,2);这样的方法是在栈上创建的,在方法结束后自动释放,所以,返回的p在使用时将非法。

接下来看这样:
Point* fun2()
{
Point* p = new Point(1,2);//Point 之前已定义
return p;
}

在C++中 Point* p = new Point(1,2); 这样的方法是在堆上创建的,需要用户手动释放,所以,返回的p在使用时将正确,用户需要在不使用时将其释放。