C++ refuses to compile this:
class C {
C c;
};
int main() {
C c;
}
Perhaps reasonable.
But it's fine in Java:
class C {
public static void main(String[] args) {
C c = new C();
}
C c = new C();
}
What do you think happens?
Roughly equivalent C++ code may look like:
class C {
public:
C* c;
C() {
c = new C();
}
};
int main() {
C c;
}