Jesse Phillips:

> > class Foo {
> >   string name = "c1";
> >   static void foo() {}
> > }
> > class Bar : Foo {
> >   string name = "c2";
> >   static void foo() {} // silent method hiding
> > }
> > void main() {}
> 
> Should we just disallow this?

Sometimes it's an useful idiom, and probably some D code in the wild is using 
it already, so I don't think we should disallow it.

I was just asking to force it to be syntactically explicit, just like override 
will do in D2. It seems Delphi too does the same thing using a different 
keyword (this is not too much surprising, the language designers are partially 
the same).

So far I have seen no arguments against the requirement (initially just a 
warning if you compile with -w) to use a keywords as "new" there, while I have 
reasons for it in both my object oriented code and C# language design :-)


> If the function wasn't static it would just override foo.
> Or is that changing once override is required?

Override usage is going to be (hopefully soon) compulsory in D (currently you 
need -w to see an error). So that code without both static and override is 
going to be refused :-)

Bye,
bearophile

Reply via email to