|
19 / 19 / 2
Регистрация: 29.11.2009
Сообщений: 224
|
||||||
Как передалеть operator= класса?20.01.2010, 14:16. Показов 8376. Ответов 78
Метки нет (Все метки)
Вот готовая программа, но там одна проблема - после использования оператора=, при изменении значений в одном объекте класса, они изменяются и в другом. Другими словами, как сделать так, чтобы вывод программы был:
Frisky's age: 5 whisker's age: 6 а не Frisky's age: 5 whisker's age: 0 Вот код программы:
1
|
||||||
| 20.01.2010, 14:16 | |
|
Ответы с готовыми решениями:
78
operator+ как член класса Как перенести operator из базового класса в производный? Класс: Почему этот operator+ не хочет работать как функция внутри класса? |
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
| 20.01.2010, 15:44 | |
|
А разве выполняется констуктор по умолчанию (в смысле генерируемый компилятором стандатный и тупой)? Помоему выполняется конструктор копирования который я сам написал О_о мне стало страшно запутаться, ведь я только подумал что понял это! Пожалуйста проверьте код построчно и посмотрите что выполняется чтобы убедиться точно... По мне код выполняется правильно как и требовалось без всяких везений...
0
|
|
|
19 / 19 / 2
Регистрация: 29.11.2009
Сообщений: 224
|
||||||
| 20.01.2010, 16:02 [ТС] | ||||||
|
Вроде бы все работает, но память немного утекает:
0
|
||||||
|
Maniac
|
||||||
| 20.01.2010, 16:05 | ||||||
2
|
||||||
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|||||||||||
| 20.01.2010, 16:12 | |||||||||||
|
ISergey
Добавлено через 1 минуту В некоторых случаях сам таким способом пользуюсь. Добавлено через 1 минуту Единственно^ в сзязи с этим надо переделать деструктор
0
|
|||||||||||
|
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
|
||
| 20.01.2010, 16:13 | ||
![]() конструктор копирования реализованный на базе оператора присвоения делает ненужные ему вещи: удаляет только что созданные переменные и проводит проверку на равенство, которая никогда не будет true
0
|
||
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|
| 20.01.2010, 16:14 | |
|
Вот пример из простого:
void main(){ int * a =0; delete a; //что будет как думаешь. }
0
|
|
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
| 20.01.2010, 16:15 | |
|
2 Genius Ignat А зачем? Ведь везде делается new int что исключает появление 0... или нет? (кроме случая когда память кончилась :-D )
0
|
|
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
||||||
| 20.01.2010, 16:20 | ||||||
|
[CPP]Cat::Cat(const Cat& rhs)
: itsAge(0), itsWeight(0) { *this = rhs; }[/CPP no comment] Ты внимательно весь пост почитай проблема не в операции = Добавлено через 1 минуту Вот ещё кое-что заметил только в операции =
переделывается аналогично деструктору
0
|
||||||
|
Maniac
|
|
| 20.01.2010, 16:24 | |
|
Открой стандарт и прочти пункт 5.3.5
http://codepad.org/jthmcAuD
0
|
|
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
||||||
| 20.01.2010, 16:25 | ||||||
|
ISergey:
У тебя какой компилятор:
0
|
||||||
|
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
|
||
| 20.01.2010, 16:29 | ||
|
если попытаться удалить нулевой указатель - то ничего не будет
0
|
||
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|
| 20.01.2010, 16:30 | |
|
Странно Windows выкидывает ошибку.
0
|
|
|
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
|
|
| 20.01.2010, 16:32 | |
|
1
|
|
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
||
| 20.01.2010, 16:35 | ||
Добавлено через 52 секунды Значит у меня такая умная ОС. Добавлено через 2 минуты А посути мы пытаемся обратиться по нулевому адресу, что бы его освободить. Вот такую ошибку Windows и выдает.
0
|
||
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|||
| 20.01.2010, 16:36 | |||
Не по теме: Читал недавно у разработчиков игр на консоли с этим проблемы, т.к. там нулевой адресс не обладает такими св-вами. А нам вот все удобства! =)
0
|
|||
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|
| 20.01.2010, 16:42 | |
|
Освобождение адреса: 0x00000000, ни к чему хорошему не приводит.
Добавлено через 30 секунд insideone: А ты думаешь я этого не знаю. Добавлено через 52 секунды Наверное не все ОС адекватно реагируют на такое событие. Добавлено через 1 минуту Не зря в библиотеки ATL, в интеллектуальных указателях есть макросы assert выбрасывающие сообщение об ошибке: которые осведомляю о подобных ситуации: обращению к NULL адресу. Добавлено через 2 минуты insideone Меня твои цитаты не удивляют.
0
|
|
|
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
|
||
| 20.01.2010, 16:43 | ||
|
посмотри реализацию operator delete
1
|
||
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
||
| 20.01.2010, 16:46 | ||
|
zim22:
А ты посмотри atlbase.h Добавлено через 43 секунды Вдруг что то изменилось, сейчас по смотрю у себя в Visual Studio 2008 Добавлено через 1 минуту
0
|
||
|
depict1
281 / 146 / 4
Регистрация: 11.07.2009
Сообщений: 606
|
|||||||
| 20.01.2010, 16:48 | |||||||
1
|
|||||||
| 20.01.2010, 16:48 | |
|
operator[][] для класса Operator< для класса Перегрузка operator* у класса Complex Не работает operator<< шаблонного класса Vector Перегрузка operator>> для производного класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
|
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
|
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
|
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
|
|
Своя Интернет-Компания
iceja 18.06.2026
Я программист с экономическим образованием, пишу свой проект, это SaaS для бизнесов. Мне нужен co-founder с высшим экономическим образованием, и/ или инвестор. Сейчас проект в интенсивной разработке,. . .
|
24 Мат модель здравосохранения: функциональные требования к строительству пищеблока
anaschu 18.06.2026
СРесурсами1: финансовый SD-контур, калькулятор функциональных требований пищеблока
Сегодня разделили затраты в агенте Экономика по образцу модели НАСОСЫ, добавили расчёт ROI и построили первый. . .
|
23. что сделано за последнее время.
anaschu 17.06.2026
• Эталон: Клиника НИИ питания РАМН, Москва — централизованный пищеблок, 225 коек, 180 пациентов
• Git: репозиторий med2, ветка абсентеизм. Рабочий файл: СРесурсами1_v4. alp
• Смежный проект:. . .
|
22. Подключение слоя системной динамики (потоковые диффуры): экономические метрики модели
anaschu 17.06.2026
Апдейт модели: финансовый контур, разделение затрат
Продолжаю развивать модель рабочего коллектива на AnyLogic. В этот раз работа шла над агентом Экономика — финансовым SD-слоем модели. Задача:. . .
|