Did*_*set 2 c++ pointers programming-languages reference
在我所知道和接触过的编程语言中,C++ 看起来是唯一一种同时具有指针和引用的语言。这是真的吗?
Algol 68 和 Pascal 确实如此。IIRC,艾达也这么做了,尽管我不记得所有细节了。PL/I 也这么做了——它可能(很容易)是第一个同时包含这两者的。
不过,Algol 68 的引用实际上更像是 C++ 指针。在 C++ 中,一旦初始化了一个引用,它总是引用同一个对象。在 Algol 68 中,您可以“重新设置”引用,因此它引用了不同的对象。
自从我使用 Pascal 以来已经有一段时间了,但如果没记错的话,它唯一使用引用的是参数传递(即参数var通过引用传递)。我认为除了作为参数之外,您无法创建引用。
Ada 允许您将参数标记为in、out、 或inout。如果我没记错的话,一些inout参数被复制到函数中,然后在最后复制回调用者,但其他参数是通过引用传递的。正如我所说,我不记得细节了。