题
下面是我的类,它实现拷贝构造函数
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()
{
}
}
不隶属于 StackOverflow