请问下面的代码执行后,会打印什么结果?有没有什么问题?
class A {
public:
A() {
printf("in A: %ld\n", (long)this);
}
};
class B {
public:
B(A *a) {
this->a = a;
printf("in B: %ld\n", (long)a);
}
A *a;
};
class C {
public:
C(B &b) {
a = b.a;
printf("in C: %ld\n", (long)a);
}
A *a;
};
class D {
public:
D() : b(&a), c(b) {
printf("in D: %ld\n", (long)&a);
}
C c;
B b;
A a;
};
D d;