在编程中,何时对同一个对象进行2次引用是有意义的(名称歧义)

时间:2014-11-25 15:38:44

标签: oop procedural-programming

在编程中,标准做法是通过将每个对象的地址分配给一个引用变量来为每个对象赋予它自己的唯一名称。

如果我们将一个引用变量分配给另一个引用变量,它会为同一个东西创建两个不同的名称。我被问到这样做有用。

何时使用含糊不清的名称有用?我可以看到这样做的唯一原因是你需要复制一个对象的值来防止覆盖。

1 个答案:

答案 0 :(得分:2)

您所描述的不是含糊不清的,aliasing(具体为pointer aliasing)。

您通常不会明确地这样做,但如果您将引用/指针传递给另一个方法,它会非常有用。然后至少有两个变量(原始变量和参数)将引用同一个对象,但原因各不相同。

如果你明确地这样做,那么通常是因为两个变量有两个不同的角色。

例如,如果您正在编写遍历树的代码,则通常从根开始。所以代码的开头可能如下所示:

TreeNode rootNode = getTreeRootFromSomewhere();
TreeNode currentNode = rootNode;
while (currentNode != null) {
  ...

在这种情况下,currentNode显然是rootNode的别名。稍后我们肯定会更改currentNode指向的内容,但是当您第一次进入循环时,它们会指向同一个对象。