Should certain abstract classes be instantiable?

Lutger lutger.blijdestijn at gmail.com
Thu Oct 1 14:56:07 PDT 2009


Andrei Alexandrescu wrote:

> Jeremie Pelletier wrote:
>> Andrei Alexandrescu wrote:
>>> Consider:
>>>
>>> class A {
>>>     abstract void fun() {}
>>> }
>>>
>>> The class defines a function that is at the same time abstract (so it
>>> requires overriding in derivees) and has implementation.
>>>
>>> Currently the compiler disallows creation of objects of type A,
>>> although technically that is feasible given that A defines the
>>> abstract method.
>>>
>>> Should A be instantiable? What designs would that help or hinder?
>>>
>>>
>>> Andrei
>> 
>> What's the point of marking fun() abstract if it has an implementation,
>> I thought the compiler disallowed that.
> 
> It may offer incomplete functionality that is to be reused and enhanced
> by descendants.
> 
> Andrei

Then again, if it offers incomplete functionality why would you want it to 
be instantiable? Instantiable should mean you can use this guy no? I tried 
hard to think of a reason but can't find any.

 



More information about the Digitalmars-d mailing list