Private visible?
Walter Bright
newshound at digitalmars.com
Thu Jul 13 11:37:50 PDT 2006
Dave wrote:
> Everyone seems to agree that 'private' should not be accessible and the
> current behavior is a bug. What we're all wondering is if 'private' can
> also mean 'invisible' because that seems to be more intuitive. Than you
> don't have that extra level of complexity for lookup resolution and
> things like error messages describing a private interface.
The original reason why private members would be visible but not
accessible has been forgotten. However, there were some significant
issues brought up with making them invisible:
1) function overloading - if various overloads of a function have
different protections, different functions will be selected even though
the same arguments are presented. This can be surprising when code is
moved around. If they are visible, you'll get an error message instead
of silently varying behavior.
2) function overloading - one could lose the ability to 'poison' an
operation on certain argument types, because instead the private
function will not be seen and another selected.
3) function overriding - if a private function in a derived class
overrides a public one in a base class, this overriding will not happen
if the private function is invisible. Not only does this break
encapsulation, it prevents the design pattern of being able to 'poison'
certain operations on a class.
More information about the Digitalmars-d
mailing list