我不是OOP的新手,但从未完全理解为什么变量不能保持整个对象(如c ++,java和php)。那么一直使用指针的优点是什么呢?
谢谢你,我只是想在这里学习......答案 0 :(得分:2)
这不是OOP的要求。存储对某些类型的引用而不是内容本身更有效。传递复杂对象可能非常麻烦,但只是传递对象的引用或地址非常有效。大多数编程语言都支持这些概念(值和参考类型)(Java的创建者选择从对象继承所有内容)。
许多平台,如.NET,提供的结构有点像轻量级对象。它们不支持继承,但可能具有许多成员的相当复杂的结构。即使结构支持复杂的数据类型,它们也是值类型。当然,如果一个结构太复杂,那么效率就会降低,那么你最好把它变成一个类。
答案 1 :(得分:1)
关键是内存管理;通过使用指针,您的程序并不总是复制它只是指向它的变量。
答案 2 :(得分:1)
归结为自动与手动内存管理。像Java和.NET这样的平台在虚拟机上运行,实现garbage collector。这会自动管理内存的分配和销毁。在这些系统中,所有变量都来自单个基本Object
类型。
C ++ 确实允许你将一个对象实例存储在堆栈中(即,不是由指针和堆分配的)。相比之下,C ++有许多原始类型(int
,float
等),它们不扩展基类型。