struct vs. class, int vs. char.
Denis Koroskin
2korden at gmail.com
Wed Apr 29 02:06:18 PDT 2009
Here is another example:
import std.stdio;
import Scope;
class Foo
{
this(int i, int j, int k) {
writeln("Foo.this(): ", i, j, k);
}
~this() {
writeln("Foo.~this()");
}
}
class Bar
{
this(int i, int j, int k)
{
writeln("Bar.this(): ", i, j, k);
foo = Scope!(Foo)(i, j, k);
}
~this()
{
writeln("Bar.~this()");
}
Scope!(Foo) foo;
}
// Just for comparison - note that they are almost the same
class NoScopeBar
{
this(int i, int j, int k)
{
writeln("NoScopeBar.this()");
foo = new Foo(i, j, k);
}
~this()
{
writeln("NoScopeBar.~this()");
}
Foo foo;
}
void main()
{
auto bar = Scope!(Bar)(1, 2, 3);
}
Expected output:
Bar.this(): 123
Foo.this(): 123
Bar.~this()
Foo.~this()
Output:
Bar.this(): 123
Foo.this(): 123
Bar.~this()
It is a DMD bug: calling an object's dtor should call dtors on all its fields.
More information about the Digitalmars-d
mailing list