inheriting constructos

Sean Kelly sean at invisibleduck.org
Mon Nov 30 20:21:24 PST 2009


Ary Borenszweig Wrote:

> Nick Sabalausky wrote:
> > "Ary Borenszweig" <ary at esperanto.org.ar> wrote in message 
> > news:hf03ps$lk2$1 at digitalmars.com...
> >> Andrei Alexandrescu wrote:
> >>> Walter and I just discussed the matter of inheriting constructors. Our 
> >>> thought on the issue:
> >>>
> >>> a) If a class doesn't define any constructors and adds no fields, inherit 
> >>> constructors. Example:
> >>>
> >>> class MyException : Exception {}
> >>>
> >>> b) If a class defines at least one constructor, do not inherit 
> >>> constructors.
> >>>
> >>> c) If a class doesn't define any constructors but does add at least a 
> >>> non-static field -> undecided.
> >>>
> >>> What do you think?
> > 
> >> I think c should be a compile-time error.
> >>
> > 
> > Why? (Not to be contentious.)
> 
> At first I thought you might want to add fields to a subclass for 
> logging, or caching, stuff like that, while still wanting to inherit the 
> constructors. Then I checked some code for a project I wrote in Java and 
> always when the subclass had new fields it defined a different 
> constructor, and the logging fields were static. So I think that most of 
> the time you'd want to inherit the constructors when you don't define 
> new fields.

Since class member data is default initialized, I'm not sure I agree.  For example, let's say I want to modify a string class to add a search feature, and I want it to cache the prior result for performance reasons.  There's no need to ctor-initialize the result field, only to make sure it's null at the start.



More information about the Digitalmars-d mailing list