System programming in D (Was: The God Language)

Timon Gehr timon.gehr at gmx.ch
Wed Jan 4 15:40:26 PST 2012


On 01/05/2012 12:26 AM, Manu wrote:
> You just missed a big discussion on IRC about this, where I think I made
> some fair points that people actually agreed with.
>
>     On 1/4/2012 10:53 AM, Manu wrote:
>
>         Oh, and virtual-by-default... completely unacceptable for a
>         systems language.
>           most functions are NOT virtual, and finding the false-virtuals
>         while
>         optimising will be extremely tedious and time consuming.
>
>
>     The only reason to use classes in D is for polymorphic behavior -
>     and that means
>     virtual functions. Even so, a class member function will be called
>     directly if
>     it is private or marked as 'final'.
>
>
> Is this true? Surely the REAL reason to use classes is to allocate using
> the GC?

You can allocate any type using the GC.

> Aren't struct's allocated on the stack, and passed to functions by
> value? Do I need to start using the ref keyword to use GC allocated structs?
>

No.

>     An easy way to find functions that are not overridden (what you
>     called false virtuals) is to add:
>
>        final:
>
>     at the top of your class definition. The compiler will give you
>     errors for any functions that need to be virtual.
>
>     If you don't want polymorphic behavior, use structs instead. Struct
>     member
>     functions are never virtual.
>
>
> I have never written a class in any language where the ratio of virtual
> to non-virtual functions is more than 1:10 or so... requiring that one
> explicitly declared the vastly more common case seems crazy.

Are you sure that is the case?
In my code, most class member functions are true virtual.




More information about the Digitalmars-d mailing list