On Fri, 09 Oct 2009 11:40:43 -0500, Andrei Alexandrescu
<[email protected]> wrote:
>I'm talking with Sean and Walter about taking the first step towards
>eliminating delete: defining function clear() that clears the state of
>an object. Let me know of what you think.
>
>One problem I encountered is that I can't distinguish between a default
>constructor that doesn't need to exist, and one that was disabled
>because of other constructors. Consider:
>
>class A {}
>class B { this(int) {} }
>
>You can evaluate "new A" but not "new B". So it's legit to create
>objects of type A all default-initialized. But the pointer to
>constructor stored in A.classinfo is null, same as B.
>
>Any ideas?
>
The notion of default constructor is not quite clear.
class A
{
this(int a = 22) {}
}
Should A be considered as having a default constructor?
class B
{
this(int) {}
}
Should passing int.init to B's constructor be considered default
construction? If yes, we could recreate B using the init value. But
then:
class C
{
this(int a) {}
this(int a, int b) {}
}
Which constructor to call? The one with fewer parameters? What if
there are overloaded constructors with identical number of parameters?
Should we explicitly mark one of the constructors as default?