Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2010, 15:19   #1
Tanya881103
 
Регистрация: 10.06.2010
Сообщений: 6
По умолчанию Перезагрузка оператора присваивания

Прокомментируйте, пожалуйста!

person &person:perator=(person &z)
{
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=new node1;
if (p==NULL) {cout<<"ERROR... Lack of Memory.\n";
getch();
exit(-1);
}
p->d=pz->d;
p->next=NULL;
pend->next=p;
pend=p;
}
}
return *this;
}
Tanya881103 вне форума Ответить с цитированием
Старый 10.06.2010, 15:30   #2
ozo
Форумчанин
 
Аватар для ozo
 
Регистрация: 26.04.2010
Сообщений: 328
По умолчанию

Цитата:
Сообщение от Tanya881103 Посмотреть сообщение
Код:
        if (p==NULL) {cout<<"ERROR... Lack of Memory.\n";
                      getch();
                      exit(-1);
                     }
Исключения, исключения же.
поля класса покажите, а лучше его обьявление, тут экстрасенсов мало
Используй гугль, будь счастлив
hackme@yandex.ru
Блог об archlinux
ozo вне форума Ответить с цитированием
Старый 10.06.2010, 15:33   #3
Tanya881103
 
Регистрация: 10.06.2010
Сообщений: 6
По умолчанию

class person //класс PERSON
{
protected:
node1 *beg1;
void clear1();
public:
person() {beg1=NULL;}
person(person &z);
~person() {clear1();}
person &operator=(person &z);
};
Tanya881103 вне форума Ответить с цитированием
Старый 10.06.2010, 15:33   #4
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

Перегрузка оператора "="(присваивание).
Класс 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;    //возвращаем текущий объект
}
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 10.06.2010, 15:47   #5
Tanya881103
 
Регистрация: 10.06.2010
Сообщений: 6
По умолчанию

А можно по проще?
Tanya881103 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
delphi, оператор присваивания polnyi_novichek Помощь студентам 3 08.05.2010 23:04
оператор присваивания в delphi polnyi_novichek Помощь студентам 4 21.02.2010 21:28
Если y – вещественная переменная, а n – целая, то оператор присваивания какой будет иметь вид? Naruto63 Помощь студентам 6 23.11.2009 16:30
использование условного оператора в теле оператора цикла с условием машко Помощь студентам 2 21.06.2009 23:55