Код: Выделить всё
class Class1
{
private :
Class2 *obj;
public:
Class1();
Class1(const Class1 &other);
Class1 & operator=(const Class1 & obj)
~Class1();
}
class Class2
{
Class2();
Class2(const Class2 &other);
Class2 & operator=(const Class2 & obj)
~Class2();
}
Код: Выделить всё
Class1::Class1(const Class1 &other)
{
*this = other;
}
Код: Выделить всё
Class1 & Class1::operator(const Class1 & obj)
{
if(this != &other)
this->data = obj.data
return *this;
}
Код: Выделить всё
Class1::Class1(const Class1 &other)
{
this->obj = new Class2();
*this = other;
}
Class1 & Class1::operator(const Class1 & obj)
{
if(this != &other)
{
this->data = obj.data
this->obj = new Class2();
}
return *this;
}
Я знаю, что это называется глубоким копированием, которое позволяет каждому экземпляру class1 иметь собственную переменную типа Class2 и избегать использования адреса общей памяти, чтобы изменения одного объекта экземпляра Class1 не влияли на другой объект того же типа.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ator-overl