我来自C / C ++世界。我在许多帖子中都注意到人们不接受在Java中说“通过引用传递”(对于非原语);他们的论点是,在这种情况下,会引用一份参考文献。我无法理解这种理由,因为这实际上是在我们通过引用传递时在C中发生的事情(获取指针的副本)。对于我在Java中的一点理解,我会说:
我错了吗?
答案 0 :(得分:4)
在C ++中,考虑函数:void func(Type &arg);
。在这里,如果您更改arg
(不是 的内容而是实际变量),则调用者对传入参数的视图已完全更改。这是通过引用传递的。与void func(Type *arg);
对比。在这里,您可以更改arg
的内容,但是如果您将arg
分配给某个内容,则由于指针的值传递,它只是本地更改。
在Java中,您在所有复杂类型上使用pass by(不可见)指针。