关于对象实例化的一个小问题。想了想,没有想明白。(50分)

  • 主题发起人 白衣书生
  • 开始时间
F

framesniper

Unregistered / Unconfirmed
GUEST, unregistred user!
我讨厌这种问题!
 

白衣书生

Unregistered / Unconfirmed
GUEST, unregistred user!
to framesniper:
那请你保持沉默。不要爆发。
 
L

lich

Unregistered / Unconfirmed
GUEST, unregistred user!
这么说,它和类方法 class 。。。
是等效的了?
 
M

majorsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
请楼主注意:
你这种使用对象方法的情况,当对象方法中访问到数据成员(或虚方法)时,会出现问题,建议不要这么用!而改用类方法,这样才会使你的代码更强壮!
类方法和对象方法还是有区别的:
1.在对象方法中,self引用的是调用它的对象
而在类方法中,self引用的是类。
2 对象方法可以使用虚方法和基类指针提供对象一级的多态
而类方法可以使用虚拟的类方法和类引用提供类一级的多态。
我认为是Delphi是没有封装好,应该说没有保护好。
实际上我们可以通过指针访问非友员的对象的私有成员,而在正常情况下,是不可以的,因为Delphi提供了这种保护功能。
 

我是笨猪

Unregistered / Unconfirmed
GUEST, unregistred user!
希望大家能给我一个满意的答案,到底是什么原因会这样?
我是菜鸟,所以我想弄个明白
 
D

Dr.johns

Unregistered / Unconfirmed
GUEST, unregistred user!
可能是因为,在Var a :TMyClass时,只是创建了一个指向TMyClass类的指针,要知道,所有同一个类的变量如a都是32位的指针。但该类是没有数据成员的,只有方法。对象引用的方法都来自类,而数据成员才是自己所有的,即对象的方法都一样,就是属性不一样而已。TMyClass是静态的存在于内存中的,只调用方法是可以的,但不能有数据域,因为没有create就没有自己的内存空间。
我只是提提我的看法,具体是不是这样就要去找一位对编译器原理熟悉的人来看看了。
 

Similar threads

S
回复
0
查看
948
SUNSTONE的Delphi笔记
S
S
回复
0
查看
769
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
662
import
I
顶部