10

今天,当我不得不重写TObjectBeforeConstruction方法时,我想到了一个非常简单的问题:

为什么TObject方法AfterConstructionBeforeConstructionpublic可见性?

我希望他们是protected。他们不是的原因是什么?

我无法想象调用AfterConstructionBeforeConstruction不调用该类的构造函数或析构函数的有效目的。你?

4

1 回答 1

10

上一个问题询问为什么其他一些方法是公共的而不是受保护的,答案是它们在某些时候需要由未附加到类的实用程序函数调用。

TObject.AfterConstruction被这样一个实用函数调用,System._AfterConstruction. 如果它受到(严格)保护,那么该独立函数将无权访问该方法。

的所有方法TObject都是公开的。* 我们或许可以找到解释为什么每种方法都是公开的理由,但在某一点上,我怀疑任何给定方法公开的根本原因是所有其他方法也是公开的。

一旦 Delphi 公开了这些方法,任何降低它们的可见性都会有破坏现有代码的风险。


GetDisposed*和CheckDisposed, 出于某种原因除外。与大部分TObject.

于 2015-05-08T21:41:12.953 回答