On 12/14/10 1:19 PM, so wrote:
Could you please elaborate the disadvantages part?

Thanks!

Consider the empty() property. A struct using a pointer internally can return true from empty if the pointer is null. A class cannot do that.

struct Array {
    Impl * p;
    @property bool empty() { return !p || p.empty; }
}

vs.

class Array {
    @property final bool empty() { ... }
}

Whatever empty() does, it must be called against an already-allocated reference to an Array.

The two words overhead comes from the vtable and the mutex.

A struct that has control over its own storage can be more aggressive about releasing unused memory. A class does not have that kind of control because it doesn't know how many references are out there to the same object.


Andrei

Reply via email to