System programming in D (Was: The God Language)
Timon Gehr
timon.gehr at gmx.ch
Wed Jan 4 16:21:04 PST 2012
On 01/05/2012 12:54 AM, Manu wrote:
> On 5 January 2012 01:40, Timon Gehr <timon.gehr at gmx.ch
> <mailto:timon.gehr at gmx.ch>> wrote:
>
> 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.
>
>
> Here's one I'm working on right now (C++).
> Base class for a UI system, surely one of the most heavily polymorphic
> types of code one can imagine.
Apparently that is not true.
>
> Count the virtuals... http://pastebin.com/dLUVvFsL
9/~65 approx 1:6.
More information about the Digitalmars-d
mailing list