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".

Reply via email to