Am 10.11.2013 17:06, schrieb Alexandr Druzhinin:
Could somebody explain why this http://dpaste.dzfl.pl/248262b9 return this:
Foo:
7FBFD59A50
7FBFD59A80
Bar:
7FBFD59A58
7FBFD59A88
Why this value in ctor is different from this value out of ctor if ctor
gets an argument?

Because in D Classes are reference types. That means the code you wrote is equivalent to the following C++ source:

class Foo
{
public:
  Foo(Object* o)
  {
    printf("%x\n", &this); // print a Foo**
  }
}

class Bar
{
public:
  Bar()
  {
    printf("%x\n", &this); // print a Bar**
  }
}

void main()
{
  Object* o = new Object;
  Foo* foo = new Foo(o);
  printf("%x\n", &foo); // print a Foo**

  Bar* bar = new Bar();
  printf("%x\n", &bar); // print a Bar**
}

My best guess would be that you wanted to pass "this" instead of "&this" to writeln as weel as "bar" instead of "&bar" etc.

Kind Regards
Benjamin Thaut

Reply via email to