对象?引用?指针?(200分)

  • 主题发起人 主题发起人 教父
  • 开始时间 开始时间

教父

Unregistered / Unconfirmed
GUEST, unregistred user!
在http://www.delphibbs.com/delphibbs/dispq.asp?lid=623536中看到gwbasic提出这个
问题,是来自CSDN的,觉得有些意思,但是gwbasic勿勿就把贴子结束了,觉得有些遗憾,
想在些听听各位大富翁的意见!
http://www.csdn.net/expert/TopicView.asp?id=284314
http://www.csdn.net/expert/Topic/261/261220.shtm
http://www.csdn.net/develop/article/10/10124.shtm

 
有趣
关注
 
1. 不要把引用想得过于复杂,引用只是一个对象的别名,就像教父你可以
有自己的真名,DFW上的网名,OICQ上的ID一样。

2. 引用绝不是指针,虽然有时候看起来挺像

3. 在C++里一般会在函数参数传递中使用引用

const CMyClass&amp
obj1 -----> 功能同Pascal里的传值
CMyClass&amp
obj1 -----> 功能同Pascal里的传地址
 
我认为C++里没有引用呀!?!
 
引用是一种特殊的数据类型,是一些将类的有关信息作为整体存储的对象。
类引用提供了对类型信息的访问。可以使用他建立类或访问类型信息。
 
引用本身并不包含特殊的信息

1 从语言角度来说,它就是对象的另一个对象名(所以不可以指向NULL)

2 从编译实现角度说,它和指针是一样的。

可以看一下VC 对这段代码的实现

CHello obj_hello;
CHello &ref_hello = obj_hello;
CHello *pt_hello = &obj_hello;

编译结果:

20: CHello obj_hello;
0040122D lea ecx,[ebp-10h]
00401230 call @ILT+15(CHello::CHello) (00401014)
00401235 mov dword ptr [ebp-4],0

21: CHello &ref_hello = obj_hello;
0040123C lea eax,[ebp-10h]
0040123F mov dword ptr [ebp-14h],eax

22: CHello *pt_hello = &obj_hello;
00401242 lea ecx,[ebp-10h]
00401245 mov dword ptr [ebp-18h],ecx

我觉得对Delphi 使用者来说,最好就将引用理解为一个全局的传址参数
就像
func(var par:integer)
中的par一样


 
看来还是有人对这个东西颇有研究,不再发言了。![:(!]
 
多人接受答案了。
 
后退
顶部