Recursive Type Definitions

06/01/2024
Go back

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; }