在Java中不光被允许这样:
-
class A { A a; }
还被允许这样:
-
class A { A a = new A(); }
但是,类没有被定义完整确实是不能够被实例化的!
那为什么上面代码被允许?请往下看。
在C++中,类成员不能是自身的对象。原因就是类没有被定义完整是不能够被实例化的,否则我要有A的对象做成员,可A我还没有定义完就实例,这样岂不是递归下去了...
所以在C++中你不能这样:
在Java中不光被允许这样:
class A { A a; }
还被允许这样:
class A { A a = new A(); }