对象指针和对象引用的区别( 能通过程序讲)

来源:百度知道 编辑:UC知道 时间:2024/05/14 05:04:20

如果是说C++的话,对象指针是指向对象空间首地址的指针,对象引用是对象名的别名。比如:
#include<stdio.h>
class foo {};
void func1(foo* f){printf("%p\n",f);} //对象的指针
void func2(foo& f){printf("%p\n",&f);} //对象的引用
int main() {
foo a;
printf("%p\n",&a);
func1(&a);
func2(a);
return 0;
}
输出的结果应该是三个相同的地址。也应该可以这样认为:通过引用传递对象是隐式地传递了对象的指针。

如果是C#和JAVA的话,对象引用是堆空间中对象实体的句柄。
class foo {}
foo p; //此时p=null
p = new foo(); //此时在堆里建立了foo的实例的空间,令p引用该实例

String str = new String();

str就是引用
new String();得到了一个String类的对象,它就是一个内存地址

故:str 引用 = 号右边的对象