clear()

Max Samukha spambox at d-coding.com
Fri Oct 9 10:53:07 PDT 2009


On Fri, 09 Oct 2009 11:40:43 -0500, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> 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?



More information about the Digitalmars-d mailing list