Zombie Object?
Namespace
rswhite4 at googlemail.com
Thu Feb 7 02:15:48 PST 2013
[code]
import std.stdio;
class Vec2 {
public:
short x, y;
this(short x, short y) {
this.x = x;
this.y = y;
}
}
void foo(Vec2 v) {
delete v;
}
void bar(Vec2 v) {
}
void main() {
foo(new Vec2(42, 23));
Vec2 v1 = new Vec2(4, 2);
foo(v1);
assert(v1 !is null);
writefln("v1.x = %d", v1.x);
Vec2 v2 = new Vec2(4, 2);
bar(v2);
writefln("v2.x = %d", v2.x);
}
[/code]
This code prints:
v1.x = 0
v2.x = 4
But is this correct? I expected
v1.x = 4
v2.x = 4
Same behaviour with destroy.
More information about the Digitalmars-d-learn
mailing list