Конструктор копирования - это конструктор с одной из следующих подписей:
class A
{
A(A& other);
//or
A(const A& other);
//or
A(volatile A& other);
//or
A(const volatile A& other);
//or any of the above + other parameters that have default arguments
//example:
A(const A& other, int x = 0) //this is also a copy constructor
};
Выше указано в 12.8.2 стандарта - C ++ 03.
поэтому вы правильно реализуете конструктор копирования.
Причина, по которой он должен получить параметр const
, заключается в том, что вы не меняете объект, с которого копируете. Если вы вызываете неконстантные функции, вы делаете что-то не так.
Также в вашем фрагменте
EditNodeContainer *container1 = new EditNodeContainer("c1");
EditNodeContainer *copyContainer = new EditNodeContainer(container1);
вы не вызываете конструктор копирования, потому что вы передаете EditNodeContainer*
в качестве параметра, а не EditNodeContainer
.