Eliminate "new" for class object creation?
Yigal Chripun
yigal100 at gmail.com
Mon Oct 19 15:58:56 PDT 2009
On 20/10/2009 00:38, Andrei Alexandrescu wrote:
> I'm having a hard time justifying that you use
>
> new X(args)
>
> to create a class object, and
>
> X(args)
>
> to create a struct object. I wrote this:
>
> ============
> The syntactic difference between the expression creating a @struct@
> object---Test(@\meta{args}@)@---and the expression creating a @class@
> object---\cc{new Test(}\meta{args}@)@---may be jarring at first. \dee
> could have dropped the @new@ keyword entirely, but that @new@ reminds
> the programmer that an object allocation (i.e., nontrivial work) takes
> place.
> ===============
>
> I'm unhappy about that explanation because the distinction is indeed
> very weak. The constructor of a struct could also do unbounded amounts
> of work, so what gives?
>
> I hereby suggest we get rid of new for class object creation. What do
> you guys think?
>
>
> Andrei
I'm all for it.
I'd like to see something like:
class Foo;
auto obj = Foo.new(args);
I'd like to see a design where new allows polymorphism and different
allocation schemes - basically fix all the problems as described in that
Java article "what's wrong with new".
More information about the Digitalmars-d
mailing list