对于对象数组, Java中似乎不允许如 A s[] = new A[10] ();但是C++ 中则是允许如下语句: A s[] = new A[10] (); 这时候会调用默认构造函数进行初始化。请问这是为什么呢?

解决方案 »

  1.   

    没有为什么,就是这么设计的。但是可以反证:
    Java的数组是10元素是 Reference而已。而
    C++这么写,10个元素就是对象,如果又没有执行ctor,除非用(Replacement New),某种你都没机会调用构造函数了。
      

  2.   

    java是String[] str = new String[10];这样子啊。
      

  3.   


    你的意思是说,比如这种:
     A a = new A[10];
     Java中就是十个引用,C++中就是生成了十个没有初始化的对象。
     所以C++中需要 A a = new A[10]()以进行初始化,是这个意思么?