|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
14.12.2011, 00:09 | #1 |
Регистрация: 14.12.2011
Сообщений: 3
|
Перегрузка
Нужна помощь с прогой:
http://liveworkspace.org/code/4c956f...e51ca90fed4520 Не работает перегруженный оператор =. Заранее спасибо всем, кто поможет. |
14.12.2011, 22:00 | #2 |
Пользователь
Регистрация: 19.12.2007
Сообщений: 18
|
Скажу сразу, оператор присваивания работает.
У меня компилятор MS Visual studio 2008. Сначала начал ругаться на функцию принт, ты там неправильно поставил значения по умолчанию(т.е. они должны были у тебя стоять в объявлении в классе, а не в описании). Зато появилась другая проблема: Запустив программу снова, компиль начал ругаться на удаление блока памяти, запустив отладчик я выяснил что он ругается на деструктор, а именно на строчку delete last_el;. Ну а дальше копай сам. К стати без деструктора все работает. Да и еще тебе вопрос, что будет, если сделать самоприсваивание? З.Ы. Всегда читай ошибки, которые выдает тебе компилятор, ну и работай с отладчиком вещь незаменимая в отловке ошибок. Ах да код прилагаю, он выводит два твоих списка, только ругается на их удаление. http://liveworkspace.org/code/d89939...56108a38691a67 Последний раз редактировалось htonasral; 14.12.2011 в 22:03. |
15.12.2011, 10:01 | #3 |
Регистрация: 14.12.2011
Сообщений: 3
|
Спасибо за помощь, дестрктор поправил, но проблема осталась: в моей проге до строки return *this; все идет нормально, список получается красивый, выводится, но вышеуказанный оператор возвращает в main мусор.
|
15.12.2011, 16:49 | #4 |
Пользователь
Регистрация: 19.12.2007
Сообщений: 18
|
Хотелось бы подробнее узнать какой именно мусор выводится в программе?
Ах да, ты так и не ответил, что будет если сделать самоприсваивание(разумеется с рабочим деструктором)? |
15.12.2011, 22:00 | #5 |
Регистрация: 14.12.2011
Сообщений: 3
|
Например, 0 157564488 157564504 157564520 157564536.
С самоприсваиванием что-то не могу догадаться, подскажи. |
15.12.2011, 22:16 | #6 |
Пользователь
Регистрация: 19.12.2007
Сообщений: 18
|
Если выводится такой мусор, мне кажется неправильно работает деструктор, он удаляет данные до того, как ты их выводишь. Попробуй закомментировать реализацию деструктора и посмотреть что будет выводить программа, если выводит норм начинай шевелить деструктор, если тот же мусор, то проблема в выделении памяти для новых данных при копировании.
На счет самоприсваивания, даю подсказку: Ты передаешь в функцию самого себя, то есть указатель this, но первая строчка у тебя данные указателя this удаляют, что в таком случае будет создаваться при присваивании?? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Перегрузка [] | Lazy maximka | Помощь студентам | 8 | 02.05.2011 10:43 |
перегрузка [] | zhenya.ya | Общие вопросы C/C++ | 0 | 10.04.2011 23:44 |
C++ Перегрузка | GLAM1 | Общие вопросы C/C++ | 7 | 01.04.2011 15:49 |
перегрузка | alema | Общие вопросы C/C++ | 2 | 28.10.2009 21:20 |
Перегрузка ++ | counter | Общие вопросы C/C++ | 3 | 20.12.2008 13:30 |