Конструктор копирования в основном означает, что у вас есть один параметр - объект, который вы собираетесь скопировать.
Кроме того, сделайте глубокую копию, а не мелкую копию.
Если вы не знаете, что такое глубокие и мелкие копии, то вот вам предложение:
Предположим, вы копируете класс, у которого в поле есть одна строка целых чисел.
Мелкая копия будет:
public class Myclass()
{
private int[] row;
public MyClass(MyClass class)
{
this.row = class.row
}
}
Глубокая копия:
public class Myclass()
{
private int[] row;
public MyClass(MyClass class)
{
for(int i = 0; i<class.row.Length;i++)
{
this.row[i] = class.row[i];
}
}
}
Глубокая копия действительно получает действительные значения и помещает их в новое поле нового объекта, в то время как поверхностная копия копирует только указатели.
С мелкой копией, если вы установили:
row[3] = 5;
А затем выведите обе строки, обе копии будут иметь 5 как значение 4-го числа.
Однако при глубокой копии это будет иметь только первый отпечаток, поскольку строки не имеют одинаковых указателей.