Я предполагаю, что это может быть полезно для класса, который содержит свой список - тогда он может копировать экземпляры внутри себя.Это действительно полезно только для класса, который является и элементом, и контейнером:
class MyItems
{
private:
/* Copy ctor and =operator */
List list;
public:
void AddItems(MyItems* items)
{
MyItems* added = new MyItems(items);
list.Add(added);
}
};
Другая идея - разрешить клонирование в условиях, контролируемых классом.Это может быть полезно, когда копирование может иметь смысл, но только при определенных условиях или разрешениях:
class MyClass
{
private:
/* Copy ctor and =operator */
public:
MyClass* clone()
{
if (canClone)
{
MyClass* cloned = new MyClass(this);
return cloned;
}
else
{
return NULL;
}
}
};