又悟出两个本应用脚指头就能想到的道理。
来源:互联网 发布:淘宝天猫投诉电话多少 编辑:程序博客网 时间:2024/04/29 00:27
var
_lbl:^TLabel;
list:TList;
i:integer;
begin
list:=TList.create;
new(_lbl);
_lbl^:=TLabel.create(nil);
_lbl^.Caption:='猪?';
List.Add(_lbl);
new(_lbl);
_lbl^:=TLabel.create(nil);
_lbl^.Caption:='你!';
List.Add(_lbl);
for i:=0 to list.Count-1 do
begin
Memo1.Lines.add(TLabel(list[i]^).caption)
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
var
lbl:TLabel;
prt:pointer;
list:TList;
i:integer;
begin
list:=TList.create;
lbl:=TLabel.create(nil);
lbl.caption:='猪?';
prt:=pointer(lbl);
list.add(prt);
lbl:=TLabel.create(nil);
lbl.caption:='你!';
prt:=pointer(lbl);
list.add(prt);
for i:=0 to list.Count-1 do
begin
Memo1.Lines.add(TLabel(list[i]).caption)
end;
end;
输出都是
Memo1
猪?
你!
前者每次都创建一个对象的指针p,该p先指向对象,对象又指向猪所在的地盘。记录了该指针指向的地址。
后者每次对对象o重新分配空间,然后这个o(实质上也是指针)指向一个地址,这个地址就是猪所在的地盘范围。记录了该地址值。
不知道世人们都是用哪个方法,在object pascal里不碰指针好多年。不过看到
Memo1.Lines.add(TLabel(list[i]^).caption)
和
Memo1.Lines.add(TLabel(list[i]).caption)
这两句,突然悟到:
类型的强制转换TClassName(x),无非瓜号里x的值是对象的头地址,以这个头地址为起点,TClassName这个类的大小为势力范围,把这块地址再瓜分一下。瓜号里的东西,无论常量变量,永远都是对象所在的地址,刚刚才发现,x居然可以是常量。
寒啊!可怜的理论基础。。
要扎扎实实的学习为祖国和人民服务的本领了。。。。
- 又悟出两个本应用脚指头就能想到的道理。
- 人生悟出的道理
- 捕蝉中悟出的四个道理
- 旅行悟出来的道理
- 工作2年后悟出的道理
- 悟出一点道理
- 为什么别人能在两个月就很好的看完一本很厚的书?
- 做技术二十多年悟出的道理
- 两个窗口之间的通信,你能想到什么
- 由大款包养大学生想到的道理
- 我能想到的设计模式在项目中的应用
- 多表统计相同字段用 UNION就行——你能想到的人家都想到了
- 算法篇之完整的大数!!!(我能想到的高精度就这么多了)
- 就算你能想到我做任何事情的目的:难道我就错了吗?
- 有很多东西只要勤于思考,还是能够自己悟出一些道理的
- 部署webpart我悟出了一些道理
- 最近对写博客又有兴趣了?真是随心所欲,想干啥就干啥,别人 (l)说的有一腚的道理... ...
- 又想到一个好玩的东西
- ASP中实现的类似URLEncode的编码函数及对应解码函数
- 搬家
- 为什么要玩转LINUX?
- 深圳白领一年花四千的“幸福”生活
- 对象的内存本质,和相关
- 又悟出两个本应用脚指头就能想到的道理。
- 2006.6.2 收到SOA 大赛最新消息 #3
- delphi控件制作位图资源的使用
- 关于继承TPageControl中CanChange的疑惑
- ???
- 自编的VB6.0调用WinAPI的模块(整合了许多函数和过程)
- 凌晨的电脑风扇
- 文件存在,却无法下载的故障排除
- 算法导论示例-QuickSort