~= call copy ctor?
Namespace
rswhite4 at googlemail.com
Thu Jul 19 07:21:40 PDT 2012
Ok, so if a put a struct into an array, it will copied into the
array. But then? How it is deleted?
For exmaple, i have this code:
[code]
import std.stdio;
struct Test {
public:
static uint _counter;
this(int i = 0) {
writeln("Test CTor.");
_counter++;
}
this(this) {
writeln("Test Copy CTor");
_counter++;
}
~this() {
writeln("Test DTor");
if (_counter > 0) {
_counter--;
}
}
}
void main() {
{
Test[] _arr;
void copy_save(Test t) {
_arr ~= t;
}
void by_ref_save(ref Test t) {
_arr ~= t;
}
Test t = 42;
//copy_save(t);
by_ref_save(t);
writeln("end scope");
}
writefln("Counter: %d", Test._counter);
}
[/code]
_counter is still 1 but the scope is released. How is that
possible?
Even with _arr.clear(); at the end of the scope, _counter is
still 1.
I see one CTor and one Copy CTor but only one DTor.
More information about the Digitalmars-d-learn
mailing list