【发布时间】:2011-04-21 15:20:15
【问题描述】:
我对以下内容感到困惑:
在 C++ 中,我们可以通过引用将参数传递给函数(已将其声明为指针或引用变量),如果我们在函数内部对其进行修改,则更改会在函数返回时反映给调用者。
这在 java 中没有发生,我不确定我理解为什么。
例如这是来自对象 X 的方法
public boolean aMethod(int id, myClass aClass)
{
//do some logic
aClass = new MyClass();
//configure argument object aClass
return true;
}
在调用代码中:
//some code processing
myClass obj = null;
if(X.aMethod(2,obj))
{
obj.methodA();//start using the object
}
我在C++中使用它,即返回一个通知函数参数可以使用的结果,但是在java中这不起作用。
我进入 if(X.aMethod(2,obj)) 分支,但 obj 为空。为什么它是空的?
我不是在方法aMethod(int id,myClass aClass)中使用new从堆中分配了一个内存地址吗?我没有在函数中传递 obj 的“地址”吗?
我期望在调用代码中正确构造和使用 obj。我对 java 中的内存有什么误解吗?
【问题讨论】:
标签: java c++ function pass-by-reference