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新手,但从来都不明白为什么变量不能永远保存整个对象(比如C++、java和PHP)。那么,作为一项规则,一直使用指针有什么好处呢_Oop_Pointers_Object_Reference - Fatal编程技术网

为什么变量存储对对象的引用而不是对象本身? 我不是OOP新手,但从来都不明白为什么变量不能永远保存整个对象(比如C++、java和PHP)。那么,作为一项规则,一直使用指针有什么好处呢

为什么变量存储对对象的引用而不是对象本身? 我不是OOP新手,但从来都不明白为什么变量不能永远保存整个对象(比如C++、java和PHP)。那么,作为一项规则,一直使用指针有什么好处呢,oop,pointers,object,reference,Oop,Pointers,Object,Reference,谢谢,我只是想在这里学习…重点是内存管理;通过使用指针,您的程序并不总是复制变量,而只是指向它 关键是内存管理;通过使用指针,您的程序并不总是复制变量,而只是指向它 这不是OOP的要求。存储对某些类型的引用比存储内容本身更有效。传递复杂的对象可能非常麻烦,但只传递对象的引用或地址却非常高效。大多数编程语言都支持这些概念(值类型和引用类型)(Java的创建者选择从对象继承所有内容) 许多平台,如.NET,都提供类似于轻量级对象的结构。它们不支持继承,但可以具有包含许多成员的相当复杂的结构。尽管结构

谢谢,我只是想在这里学习…

重点是内存管理;通过使用指针,您的程序并不总是复制变量,而只是指向它


关键是内存管理;通过使用指针,您的程序并不总是复制变量,而只是指向它


这不是OOP的要求。存储对某些类型的引用比存储内容本身更有效。传递复杂的对象可能非常麻烦,但只传递对象的引用或地址却非常高效。大多数编程语言都支持这些概念(值类型和引用类型)(Java的创建者选择从对象继承所有内容)


许多平台,如.NET,都提供类似于轻量级对象的结构。它们不支持继承,但可以具有包含许多成员的相当复杂的结构。尽管结构支持复杂的数据类型,但它们是值类型。当然,如果一个结构太复杂,它会变得效率低下,那么最好将它变成一个类。

这不是OOP的要求。存储对某些类型的引用比存储内容本身更有效。传递复杂的对象可能非常麻烦,但只传递对象的引用或地址却非常高效。大多数编程语言都支持这些概念(值类型和引用类型)(Java的创建者选择从对象继承所有内容)


许多平台,如.NET,都提供类似于轻量级对象的结构。它们不支持继承,但可以具有包含许多成员的相当复杂的结构。尽管结构支持复杂的数据类型,但它们是值类型。当然,如果一个结构太复杂,它会变得效率低下,那么最好将其作为一个类。

归结为自动内存管理和手动内存管理。Java和.NET等平台运行在一个实现。这将自动管理内存的分配和销毁。在这些系统中,所有变量都来自一个单一的基本
对象
类型


C++确实允许将对象实例存储在堆栈上(即,不通过指针和堆进行分配)。相反,C++有许多原始类型(<代码> int <代码> >代码>浮点< /代码>等),它们不扩展基类型。

它归结为自动vs手动内存管理。Java和.NET等平台运行在一个实现。这将自动管理内存的分配和销毁。在这些系统中,所有变量都来自一个单一的基本
对象
类型


C++确实允许将对象实例存储在堆栈上(即,不通过指针和堆进行分配)。相比之下,C++有许多原始类型(<代码> int <代码> >,代码>浮点< /代码>等),它们不扩展基类型。C++中的变量可以保存整个对象。Java中的变量不能。C类中的变量只能在对象继承自<代码> Stasy.ValueType < /C>时保存对象。C++中的变量可以保存整个对象。Java中的变量不能。C#中的变量只有在其类继承自
System.ValueType
时才能保存对象。我不理解“Java的创建者选择从对象继承一切”这一部分。对象不是一个类吗?@user532722是的。因此,所有类型最终都会使用引用。因此,从根本上讲,它归结为对象值共享(重复使用相同的值)和内存分配空间节约?我不理解“Java的创建者选择让所有内容都从对象继承”这一部分。对象不是一个类吗?@user532722是的。因此,所有类型最终都会使用引用。因此,从根本上说,它归结为对象值共享(重复使用相同的值)和内存分配空间节省?佐特尼说:“在这些系统中,所有变量都来自一个单一的基本对象类型。”这可能会令人困惑。在.NET中,即使值类型最终从对象继承,它们的内容也存储在堆栈上,而不是“引用”。zourtney说:“在这些系统中,所有变量都来自一个单一的基本对象类型。”这可能会令人困惑。在.NET中,即使值类型最终从对象继承,它们的内容也存储在堆栈上,而不是“引用”