10th
Июн

Перегрузка оператора “=”(присваивание)

Posted by bullvinkle under Пост-обзор

Класс person содержит поля beg1 (как минимум)

Код:

person &person:perator=(person &z) //в левой и правой частях от оператора два объекта типа person
{
node1 *p, *pend, *pz;
if (&z == this) return *this;      //если правая и левая часть равны возвращаем левую часть
if (z.beg1==NULL) beg1=NULL;
else {p=new node1;
if (p==NULL) {cout<<"ERROR... Lack of Memory.\n"; //типа не удалось выделить память
getch();    //задерживаем экран чтобы пользователь прочитал ошибку
exit(-1);   //завершаем выполнение программы
}
p->d=z.beg1->d;
p->next=NULL;
beg1=p;
pend=p;
for (pz=z.beg1->next;pz!=NULL;pz=pz->next) //в этом цикле в p присваивается z.beg1
{p=new node1;
if (p==NULL) {cout<<"ERROR... Lack of Memory.\n";
getch();
exit(-1);
}
p->d=pz->d;   //присваиваем поле d
p->next=NULL; //на каждой итерации мы предполагаем что этот элемент последний
pend->next=p; //pend теперь не последний, делаем
pend=p;          //его таковым
}
}
return *this;    //возвращаем текущий объект
}

Тема на форуме.

Похожие статьи

Теги: