Anonymous classes should pass through super ctors
Bruno Medeiros
brunodomedeiros+spam at com.gmail
Mon Aug 18 10:12:35 PDT 2008
Frank Benoit wrote:
> Steven Schveighoffer schrieb:
>> "Frank Benoit" wrote
>>> Bruno Medeiros schrieb:
>>>> Jarrett Billingsley wrote:
>>>>> "Frank Benoit" <keinfarbton at googlemail.com> wrote in message
>>>>> news:g83v3k$n2u$1 at digitalmars.com...
>>>>>> Anonymous classes should pass through super ctors, if no ctor is
>>>>>> given.
>>>>>>
>>>>>> class C {
>>>>>> this( int i ){ .... }
>>>>>> abstract void run();
>>>>>> // ...
>>>>>> }
>>>>>>
>>>>>> auto c = new class(3) C {
>>>>>> this( int a ){ super(a); } //<-- this line should not be
>>>>>> necessary.
>>>>>> void run(){}
>>>>>> };
>>>>> All classes should pass through super ctors. :|
>>>>>
>>>> Yes, if this was to be fixed/changed, it should be for all classes,
>>>> not just anonymous ones.
>>>> I remember this issue (the automatic inheritance of ctors) being
>>>> discussed before. What were the opinions of the community? And
>>>> Walters? (I don't recall myself) If there was something approaching
>>>> consensus, it might be worth opening a bug ticket.
>>>>
>>> Aren't anonymous classes a special case?
>>> Because they are only instantiated once with exactly those arguments
>>> given in the declaration.
>>
>> Yeah, but if you're going to have auto-inheritance of constructors,
>> why not make it so I don't have to do this:
>>
>> class Base
>> {
>> this(int arg1, int arg2, char[] arg3, int arg4, float arg5) { ... }
>> }
>>
>> class Derived : Base
>> {
>> this(int arg1, int arg2, char[] arg3, int arg4, float arg5)
>> {
>> super(arg1, arg2, arg3, arg4, arg5);
>> }
>> }
>>
>> This can get annoying for a large hierarchy where you always want to
>> inherit the base class' intiailization methods.
>>
>> If we're going to get a way to do it for anonymous classes, I'd like
>> it to be universal and consistent.
>>
>> -Steve
>>
>
> I feel, that this is dangerous.
> If there are such complicated ctors, they should be forwarded
> explicitly. But i have no real argument :)
>
I don't see how this could be dangerous in any way whatsoever, if the
ctor inheritance rules followed the same rules as method inheritance rules:
* if you don't override or overload any ctor in the overload set, then
the whole overload set is available in the child class.
* if you do override or overload any ctor, well... follow the same rules
as overriding/overloading a method.
--
Bruno Medeiros - Software Developer, MSc. in CS/E graduate
http://www.prowiki.org/wiki4d/wiki.cgi?BrunoMedeiros#D
More information about the Digitalmars-d
mailing list