【问题标题】:Variable/object data structure in OO languagesOO语言中的变量/对象数据结构
【发布时间】:2013-04-02 08:08:38
【问题描述】:

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

问题是它如何如此高效地工作?变量赋值给对象的机制是什么?

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

【问题讨论】:

    标签: oop variables object data-structures


    【解决方案1】:

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

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

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

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

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

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

    相关

    What's the difference between passing by reference vs. passing by value?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多