Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 在编程中,对同一对象有两个引用(名称歧义)什么时候有意义_Oop_Procedural Programming - Fatal编程技术网

Oop 在编程中,对同一对象有两个引用(名称歧义)什么时候有意义

Oop 在编程中,对同一对象有两个引用(名称歧义)什么时候有意义,oop,procedural-programming,Oop,Procedural Programming,在编程中,标准做法是通过仅将每个对象的地址分配给一个引用变量,为每个对象指定其唯一的名称。 如果我们将一个引用变量分配给另一个引用变量,它会为同一事物创建两个不同的名称。有人问我这样做什么时候有用。 什么时候使用模棱两可的名字会有用?我认为这样做的唯一原因是,如果您需要复制对象的值以防止覆盖。您所描述的不是歧义,而是(特别是) 通常不会显式地执行此操作,但如果将引用/指针传递给另一个方法,则此操作非常有用。然后,至少有两个变量(原始变量和参数)将引用同一对象,但原因不同 如果显式地这样做,那

在编程中,标准做法是通过仅将每个对象的地址分配给一个引用变量,为每个对象指定其唯一的名称。 如果我们将一个引用变量分配给另一个引用变量,它会为同一事物创建两个不同的名称。有人问我这样做什么时候有用。
什么时候使用模棱两可的名字会有用?我认为这样做的唯一原因是,如果您需要复制对象的值以防止覆盖。

您所描述的不是歧义,而是(特别是)

通常不会显式地执行此操作,但如果将引用/指针传递给另一个方法,则此操作非常有用。然后,至少有两个变量(原始变量和参数)将引用同一对象,但原因不同

如果显式地这样做,那么通常是因为两个变量扮演两个不同的角色

例如,如果要编写遍历树的代码,通常从根开始。因此,代码的开头可能如下所示:

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

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

这不会被认为是不明确的。给定一个名称,您就可以确切地知道它所指的对象。