主题:【原创】JAVA和C#,武当和少林之争! -- Highway
除了指针,C++也有reference。C++里引入了reference似乎是想弥补C指针的种种缺陷,但reference本身却不是lvalue,无法完全替代指针。
我感觉Java、C#等“高级编程语言”其实脱离不了C的阴影。这个阴影就是指针。虽然各家都说自己的reference是如何与C指针不同的,但骨子里,都是一嘛事。
为什么呢?现在的计算机体系结构决定的。程序运行时,代码和数据必须在计算机内存里。对象是什么?封装好的数据加代码。要放在内存里就必须占一个地址,并且每个对象占用的地址还必须是唯一的。即使是stateless objects也需要地方来存放自己的类型信息,更别说那些stateful objects的成员变量了。这样,对象就和内存地址有了某种一对一的对应关系:一个对象的reference(或id等任何其他叫法)都是内存地址的一个一一映射函数。
内存地址和C的指针有区别么?没有。
- 相关回复 上下关系8
Java的Reference感觉很象C/C++的指针,但是区别是本质的。 1 Highway 字591 2005-10-17 22:43:43
但是从面向对象,特别是多态这个角度来看,Java的reference应该 请尽量 字89 2005-10-17 23:09:53
高速兄说得不错的 魔法胖子 字186 2005-10-17 23:52:17
C++的指针也是强类型啊。有区别,但本质上是一回事。
高度同意。虽然指针不是非用不可的,但是某些数据结构 1 交流电 字36 2005-10-20 19:54:56
😄很清楚了,谢谢。 johny 字0 2005-10-17 23:06:32
😮不花没人性啊! landlord 字22 2005-10-17 22:11:44
😁素闻地主掌门少林龙抓手刚烈威猛,无坚不摧,敬仰的很。 1 Highway 字122 2005-10-17 22:31:34