Информатика и технология программирования

         

Переопределение операции присваивания


При отсутствии переопределения операции присваивания производится побайтное копирование объектов. Такая интерпретация операции присваивания некорректна, если объект имеет указатели на динамические переменные или массивы, идентификаторы связанных ресурсов и т.д.. При копировании таких объектов необходимо сначала уничтожить связанные динамические переменные и ресурсы левого операнда, а затем заново резервировать, но уже с параметрами, необходимыми для интерпретации операции присваивания:


//------------------------------------------------------bk73-10.cpp


//------Переопределение операции присваивания


class string // При переопределении операции


{ // присваивания для класса строк


char *Str; // необходимо сначала освободить


int size; // динамический массив, содержании


public: // строку в левом операнде


string &#38operator =(string&#38);
};
string &#38string::operator=(string&#38 right)
{
if (Str !=NULL) delete Str; // Освободить динамическую


// память левого операнда


size = Str.right.size; // Резервировать память под


Str = new char[size]; // размер строки правого


strcpy(Str,right-&#62Str); // Копировать строки


}



Содержание раздела