Java为什么不支持C++中的复制构造函数?

最佳答案

Java。只是没有像在C++中那样隐式地调用它们,我怀疑这是您的真正问题。

首先,复制构造函数无非是:

public class Blah {
  private int foo;

  public Blah() { } // public no-args constructor
  public Blah(Blah b) { foo = b.foo; }  // copy constructor
}

现在,C++将使用以下语句隐式调用复制构造函数:
Blah b2 = b1;

在这种情况下,克隆/复制在Java中根本没有意义,因为所有b1和b2都是引用,而不是像C++中那样的值对象。在C++中,该语句复制对象的状态。在Java中,它仅复制引用。对象的状态不会被复制,因此隐式调用复制构造函数没有任何意义。

这就是全部。

10-07 19:09
查看更多