下面是我的类,它实现拷贝构造函数

public class TestCopyConst
{
    public int i=0;
    public TestCopyConst(TestCopyConst tcc)
    {
       this.i=tcc.i;
    }
}

我试图在我的主要方法

以创建用于上述类别的实例
TestCopyConst testCopyConst = new TestCopyConst(?);

我不知道我应该通过作为参数。如果非要再次通过TestCopyConst的实例,然后我必须去为“新”这反过来将用于参数再次提示

TestCopyConst testCopyConst = new TestCopyConst(new TestCopyConst(?));

缺什么吗?或拷贝构造的概念本身是不同的东西?

有帮助吗?

解决方案

您错过一个构造函数,是不是一个拷贝构造函数。拷贝构造函数复制现有对象,则需要另一种方式让他们摆在首位。只要创建具有不同的参数和不同的实现另一个构造。

其他提示

您还需要实现一个无参数的构造函数:

public TestCopyConst()
    {

    }

或者一个接受一个i

public TestCopyConst(int i)
    {
        this.i = i;
    }

然后,您可以简单地这样做:

TestCopyConst testCopyConst = new TestCopyConst();

或者这样的:

TestCopyConst testCopyConst = new TestCopyConst(7);

通常情况下,你的类将有一个默认的无参数的构造函数;这不再是情况下,当你实现自己的构造函数(假设这是Java,它看起来像)。

您将使用拷贝构造函数作为一个重载的构造克隆对象,但你还需要另一个构造以正常的方式来初始化实例:

public class TestCopyConst
{
    public int i=0;

    public TestCopyConst(int i)
    {
       this.i = i;
    }

    public TestCopyConst(TestCopyConst tcc)
    {
       this.i=tcc.i;
    }
}
  

“拷贝构造的概念是   本身不同的东西?“

Java没有复制构造的方式C ++有它们,即自动生成的和/或由编译器调用。你可以自己定义一个,但它只有一个,如果使用的的调用它。不一样的东西,由长白垩。

  

我不知道我应该通过作为参数。如果非要再次通过TestCopyConst的实例,然后我必须去为“新”这反过来将用于参数再次提示

在这里,你正在证明这一点。你可以通过一个拷贝构造函数的唯一事情是同一类(或派生类...)的另一个实例。如果没有其他情况下复制,为什么你认为你都需要一个拷贝构造函数?

你需要

public class TestCopyConst 
{ 
    public int i=0; 
    public TestCopyConst(TestCopyConst tcc) 
    { 
       this.i=tcc.i; 
    } 
    public TestCopyConst(int val)
    {
       i = val;
    }
    //or
    public TestCopyConst()
    {
    }
} 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top