在面向对象的编程语言中,当您定义变量时,它最终会成为对象的引用。变量本身不是对象,而是指向携带分配给该变量的值的对象。
问题是这如何有效地运作?如何将变量分配给对象的机制是什么?
我对组织的看法是作为链接列表,但无法找到如何使用Ruby或Java等语言构建数据的参考。
答案 0 :(得分:1)
在面向对象编程语言中,当您定义变量时,它最终会成为对象的引用。
这并非总是如此。例如,C ++可以被认为是面向对象的语言,但语言的用户可以使用变量作为引用/指针或显式地作为值。
但是,你是对的,因为一些(通常是更高级别的)OO语言隐式使用引用,因此该语言的用户不必担心这些类型的实现“详细信息”的性能。他们试图对此承担责任。
这如何有效地运作?如何将变量分配给对象的机制是什么?
考虑一个简单的例子。将对象作为参数传递给函数时会发生什么?必须创建该对象的副本,以便该函数可以在本地引用该对象。对于隐式使用引用的OO语言,只需要复制对象的地址,而真正的pass-by-value则需要对象的完整内存内容的副本,这可能是可能非常大(想想一组对象或类似物)。
对此的详细解释涉及进入装配的胆量。例如,为什么甚至需要首先将对象的副本复制到函数调用?为什么地址的间接不需要比直接值更长的时间?等
相关强>
What's the difference between passing by reference vs. passing by value?