对或错:在没有指针的 OO 语言中,所有对象都是引用

Alw*_*ing -13 pointers programming-languages reference

是不是,在没有显式指针的面向对象语言中,所有对象都必须是引用?

\n

这里的引用就像标签中定义的那样:

\n
\n

引用是一个值,它使程序能够间接访问计算机内存或其他存储设备中的特定数据,例如变量或记录。

\n
\n

这是我的推理。考虑一下如果我们将数据结构作为参数传递给函数会发生什么。该数据结构可能很大,因此我们绝对不希望创建副本。在具有显式指针的语言中,我们将传递一个指向数据结构的指针。在没有显式指针的语言中,参数最好隐式地充当指针,并提供对数据结构的间接访问。换句话说,最好有一个参考。

\n

仅当我开始提问时的陈述是错误的时才需要答复。在这种情况下,解释为什么上述推理不合理会对我和未来的读者有所帮助。

\n

Joa*_*uer 5

我认为“[...]所有对象都必须是引用”是错误的,原因有两个,第一个可能是挑剔的:

\n
    \n
  1. 对象不是引用或指针。它们可以使用引用和指针来引用,但它们本身是数据(有时是代码)的集合。这个原因可以通过将问题重新表述为“所有对象都通过引用处理”或类似的内容来解决。
  2. \n
  3. “[...]我们绝对不想\xe2\x80\x99 想要创建副本。” 对于通用语言来说是一个合理的假设,但有些语言非常专业,并且可能存在于一个利基市场,在这种利基市场中,为每个方法/函数调用复制大对象的缺点被认为是值得的。
  4. \n
\n

从根本上讲,我认为所有面向对象的语言都需要支持对其对象的某种引用。这种支持是采用简单指针的形式还是更接近C++ 引用的形式取决于语言。

\n

  • 在我看来,挑剔取决于您使用的各种术语的定义,因为这些定义正是我们在这里争论的内容。如果我们不能就定义达成一致,那么我们就无法就答案达成一致。您似乎正在寻找一些“普遍正确的答案”,而没有严格定义每个单词的含义。我认为这种方法不太可能奏效。 (6认同)