让"私人"成员表现得像"严格私人"

1 delphi oop

即将推出的Delphi版本中的功能怎么样呢?

也许它可能是一个编译器开关,将所有**private**推广到**strict private**.

...或者它可能是尼克霍奇斯谈论的新的非遗留编译器字体结尾的一个特征.=> private总是表现得像strict private.

编辑:我想要这个的原因是因为我只是不想strict在我的private修饰符中添加数千个s .此外,"严格私有"行为是我熟悉的任何面向对象语言的默认行为!

Too*_*the 8

引用文章:

因此,我们正在努力创建一个"新的Delphi"和一个新的编译器体系结构,以保持现有代码的工作,使用Delphi和C++ Builder发出64位二进制文​​件,也许还有一些其他类型的二进制文件.在它.这一切都必须正确完成,这一切都适合你.

我将其解释为,如果codegear将改变私有的行为.然后,他们将提供一个选择,以保持旧的行为,就像他们过去一样.

仅仅为了澄清,在一个类中有6个不同的访问级别(确定7但不推荐使用自动化).

public: Anything that can access the object can access this.
protected: Methods in the class and its subclasses and anything in the same unit can access.
strict protected: Methods in the class and its subclasses can access.
private: Methods in the class and anything in the same unit can access.
strict private: Methods in the class.
published: As public buth with runtime information for the object inspector.
Run Code Online (Sandbox Code Playgroud)


Jim*_*eth 6

当前的私有实现对于声明它所在单元之外的所有内容都是私有的.因此,如果您不想添加严格声明的原因是您不想修改现有单元,那么除了破坏任何单元之外您没有任何好处.访问同一单元中的类的现有代码.只要你的现有单位没有被修改,那么严格和非严格私人之间的区别就是学术上的.

如果您对严格行为的推理是使用编译器来帮助您重构利用较少私有行为的代码,那么一次将strict添加到一个类是一个很好的增量方法,因此您可以进行编译和编译可测试状态更频繁.整个销售行为的变更需要在您知道其中任何违规行为之前确定每个违规行为.

私有行为的原因类似于C++的朋友 - 它允许某些类(或程序代码)访问私有成员.该VCLRTL大量使用的这种行为,所以编译器开关或全力以赴变化将破坏所有这些代码.

Delphi的私有实现对于所有实际目的都是私有的,因为通常你控制声明类的单元.如果你只声明每个单元一个类,并且从不包含过程代码,那么差异只是学术性的.