Delphi类的默认区域

//类中数据成员的排列顺序一般是: 字段、方法、属性

//访问权限区域的顺序一般是:

  无限制区(默认 published)

  privateprotectedpublicpublished

请问:既然无限制区默认是published,我放一个property ABC : string;在里面可以吗?

回答:这不一定, 只有继承与 TPersistent 的类才可以. 因为 TPersistent 有 {$M+} 编译指令.

也就是说: 只有编译指令 {$M+} 打开后, 默认区才等同与 published 区.

不然是等同与 public 区, 当然属性定义在 public 区也能使用, 但在设计时(Object Inspector)看不到(同时也不能存储在DFM文件里).

默认区域一般只放控件的声明,且DFM文件里有相应的实体对应(经过测试,确实如此)。否则保存的时候,会提示删除。但是强行保留,再Build倒也没事。

默认区域声明变量就显示编译错误。

这些个问题,都是细节,平时以来IDE惯了,倒也从未注意过。但不失为一个重要的知识点,特别是TPersistent以及所有继承类,默认区域都是published的,要注意。

参考:

http://www.cnblogs.com/del/archive/2008/01/14/1038118.html