Вы правы относительно того, как скопировать содержимое из другого класса.Простые объекты можно просто назначить с помощью operator=
.
Однако, будьте осторожны со случаями, когда TestClass
содержит элементы указателя - если вы просто назначите указатель с помощью operator=
, тогда оба объекта будут иметь указатели, указывающиев ту же память, которая может быть не то, что вы хотите.Вместо этого вам может потребоваться выделить некоторую новую память и скопировать в нее указанные данные, чтобы оба объекта имели свою собственную копию данных.Помните, что вам также нужно правильно освободить память, уже указанную назначенным объектом, прежде чем выделять новый блок для скопированных данных.
Кстати, вы, вероятно, должны объявить свой operator=
следующим образом:
TestClass & operator=(const TestClass & Other)
{
ClassName = Other.ClassName;
return *this;
}
Это общее соглашение, используемое при перегрузке operator=
.Оператор return позволяет объединять назначения (например, a = b = c
) и передавать параметр по ссылке const
, избегая копирования Other
на своем пути в вызов функции.