New question:

I have this code:
[code]
import std.stdio;

struct Test {
public:
        this(int i = 0) {
                writeln("CTOR");
        }

        this(this) {
                writeln("COPY CTOR");
        }

        ~this() {
                writeln("DTOR");
        }
}

void main() {
        Test[] _arr;

        _arr ~= Test(0);

        writeln("end main");
}
[/code]

And as output i see:

CTOR
COPY CTOR
DTOR
end main

Why on earth....?

I create a struct Test. It's not a local variable, it's directly assigned,
but it is copied and the original is destroyed. Why?
If i store something important, like a pointer, in Test and will free him in the DTOR i cannot assign this way Test's to an array, because the pointer was deleted because the DTOr was called.

I think the correct output would be:

CTOR
end main

Maybe DTOR before "end main". But not COPY CTOR anywhere.

Reply via email to