1

在面向对象的编程语言中,当您定义变量时,它最终会成为对对象的引用。变量本身不是对象,而是指向带有分配给该变量的值的对象。

问题是这如何有效地工作?变量分配给对象的机制是什么?

我认为组织的方式是一个链表,但是找不到参考数据是如何用 Ruby 或 Java 等语言构建的。

4

1 回答 1

1

在面向对象的编程语言中,当您定义变量时,它最终会成为对对象的引用。

这并非总是如此。例如,C++ 可以被认为是一种面向对象的语言,但该语言的用户可以将变量用作引用/指针或显式用作值。

但是,您是对的,因为某些(通常是更高级别的)OO 语言隐式使用引用,因此该语言的用户不必担心这些关于性能的实现“细节”。他们试图为此承担责任。

这如何有效地工作?变量分配给对象的机制是什么?

考虑一个简单的例子。当一个对象作为参数传递给函数时会发生什么?必须制作该对象的副本,以便函数可以在本地引用该对象。对于隐式使用引用的 OO 语言,只需要复制对象的地址,而真正的按值传递将需要对象的完整内存内容的副本,这可能非常大(想想对象或类似的集合)。

对此的详细解释涉及到组装的核心。例如,为什么首先需要将对象复制到函数调用?为什么地址的间接寻址不会比直接值花费更长的时间?等等。

有关的

按引用传递与按值传递有什么区别?

于 2013-04-02T08:27:09.053 回答