为什么变量存储对象的引用而不是对象本身?

时间:2010-12-06 18:58:20

标签: oop pointers object reference

我不是OOP的新手,但从未完全理解为什么变量不能保持整个对象(如c ++,java和php)。那么一直使用指针的优点是什么呢?

谢谢你,我只是想在这里学习......

3 个答案:

答案 0 :(得分:2)

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

许多平台,如.NET,提供的结构有点像轻量级对象。它们不支持继承,但可能具有许多成员的相当复杂的结构。即使结构支持复杂的数据类型,它们也是值类型。当然,如果一个结构太复杂,那么效率就会降低,那么你最好把它变成一个类。

答案 1 :(得分:1)

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

Why C Pointers

答案 2 :(得分:1)

归结为自动与手动内存管理。像Java和.NET这样的平台在虚拟机上运行,​​实现garbage collector。这会自动管理内存的分配和销毁。在这些系统中,所有变量都来自单个基本Object类型。

C ++ 确实允许你将一个对象实例存储在堆栈中(即,不是由指针和堆分配的)。相比之下,C ++有许多原始类型(intfloat等),它们不扩展基类型。