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_Variables_Object_Data Structures - Fatal编程技术网

Oop 面向对象语言中的变量/对象数据结构

Oop 面向对象语言中的变量/对象数据结构,oop,variables,object,data-structures,Oop,Variables,Object,Data Structures,在面向对象编程语言中,当您定义变量时,它最终成为对象的引用。变量本身不是对象,而是指向带有分配给该变量的值的对象 问题是这是如何如此有效地工作的?变量如何分配给对象的机制是什么 我认为组织是一个链表,但是找不到关于数据是如何用Ruby或Java等语言构造的参考资料 在面向对象编程语言中,当您定义变量时,它最终成为对象的引用 这并不总是正确的。例如,C++可以被认为是面向对象的语言,但是语言的用户可以使用变量作为引用/指针或明确地作为一个值。 但是,您是对的,一些(通常是更高级的)OO语言隐式地使

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

问题是这是如何如此有效地工作的?变量如何分配给对象的机制是什么

我认为组织是一个链表,但是找不到关于数据是如何用Ruby或Java等语言构造的参考资料

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

这并不总是正确的。例如,C++可以被认为是面向对象的语言,但是语言的用户可以使用变量作为引用/指针或明确地作为一个值。 但是,您是对的,一些(通常是更高级的)OO语言隐式地使用引用,这样语言的用户就不必担心性能方面的这些实现“细节”。他们试图对此负责

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

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

对这一点的详细解释包括深入了解组装的细节。例如,为什么一开始就需要将对象复制到函数调用?为什么地址的间接寻址不比直接值花费更长的时间?等等

相关的

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

这并不总是正确的。例如,C++可以被认为是面向对象的语言,但是语言的用户可以使用变量作为引用/指针或明确地作为一个值。 但是,您是对的,一些(通常是更高级的)OO语言隐式地使用引用,这样语言的用户就不必担心性能方面的这些实现“细节”。他们试图对此负责

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

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

对这一点的详细解释包括深入了解组装的细节。例如,为什么一开始就需要将对象复制到函数调用?为什么地址的间接寻址不比直接值花费更长的时间?等等

相关的