private/package methods cannot be virtual
deadalnix
deadalnix at gmail.com
Mon May 6 12:05:03 PDT 2013
On Monday, 6 May 2013 at 18:44:07 UTC, Jonathan M Davis wrote:
> On Monday, May 06, 2013 14:19:12 Henning Pohl wrote:
>> Documentation:
>> Member functions which are private or package are never
>> virtual,
>> and hence cannot be overridden.
>>
>> I was about to write a bug report about this, because in my
>> code
>> there are tons of overridden methods which actually should be
>> private/package. Can anyone tell me why this decision has been
>> made? To inline them?
>>
>> Do I really need to write interfaces to be able to override
>> these
>> methods?
>
> The decision was made to make member functions virtual by
> default. As soon as
> that function was made, there had to be a choice for every
> access level as to
> whether it would be virtual or not. public and protected
> obviously have to be
> virtual, and in general, there's no real benefit in making
> private virtual (and
> there's a definite permorfance cost to programs in general if
> you do), so it's
> non-virtual. There's a bit of disagreement with regards to
> package, but it was
> decided that it wouldn't be virtual either, as it had nothing
> to do with
> inheritance.
>
If it is private, by definition, the compiler have all override
available. So it can finalize automatically.
More information about the Digitalmars-d
mailing list