Назначение - это процедура, которая должна быть реализована для каждого класса, поэтому она выполняет то, для чего она запрограммирована. предполагается , чтобы попытаться скопировать весь объект, который передается в качестве аргумента, так, как это возможно.Но если это невозможно, то, вероятно, не должно ничего копировать.
Некоторые классы могут иметь реализации, которые не соответствуют этому неисполненному «контракту» и копируют только те части, которые им необходимы.Другими словами, то, что копируется, полностью зависит от реализации.
Назначение не имеет особого значения и является обычной функцией, а не какой-то магией компилятора.Он ничего не делает с объектом, переданным в качестве параметра, поэтому освобождение одного объекта не влияет на другой.Объекты полностью независимы.
Обратите внимание, что не все классы реализуют Assign.Вы можете подумать, что вызываете Assign для класса, но на самом деле это может быть унаследованный Assign, который ничего не знает ни о каких новых членах в производном классе, которые нужно скопировать.Идея Assign хороша, но, к сожалению, она часто не реализуется или не реализуется должным образом.