![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
А вы выделяете память для data а потом *меняете* указатель. в С++ строки не копируются автомагически (для этого вы и пишете String клас). В конструкторе, после выделения памяти воспользуйтесь услугами strcpy()
|
![]() |
![]() |
![]() |
#12 |
Пользователь
Регистрация: 14.09.2011
Сообщений: 93
|
![]()
так я и делал
Есть подозрение, что деструктор работает неправильно, так как в программе объект копируется местами, т.е. один объект копируется к другому и когда запускается деструктор запускается для того и того - т.е. фактически запускается дважды |
![]() |
![]() |
![]() |
#13 |
Пользователь
Регистрация: 14.09.2011
Сообщений: 93
|
![]()
Весь код
Код:
Т.е. так как мы там копировали, то деструктор вызывается дважды Как обойти этот момент? |
![]() |
![]() |
![]() |
#14 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
У вас все написано в operator=, правда почему то закоментировано удаление старой памяти. При создании пустой строки вы теряете указатель на выделенную память. При операторе + то же самое: выделяте память, потом вызываете к конструктор а он делает то же самое опять. Когда вы возвращаете String (как например в operator +) вызывается copy constructor - у вас его нет. Вы думаете он есть но он написан неправильно, соответственно компилятор генерит свой.
|
![]() |
![]() |
![]() |
#15 |
Пользователь
Регистрация: 14.09.2011
Сообщений: 93
|
![]()
все равно ошибка, даже если я комментарии уберу
|
![]() |
![]() |
![]() |
#16 |
Пользователь
Регистрация: 14.09.2011
Сообщений: 93
|
![]()
ребят надо помочь исправить - срочно!
|
![]() |
![]() |
![]() |
#17 |
Пользователь
Регистрация: 14.09.2011
Сообщений: 95
|
![]()
Кстати, конструктор копирования с const пишется..Иначе это не совсем тот конструктор копирования, который подразумевался)
|
![]() |
![]() |
![]() |
#18 |
Пользователь
Регистрация: 14.09.2011
Сообщений: 93
|
![]()
деструктор !!!!
|
![]() |
![]() |
![]() |
#19 | |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
![]() Цитата:
![]() |
|
![]() |
![]() |
![]() |
#20 |
Пользователь
Регистрация: 14.09.2011
Сообщений: 93
|
![]()
В чем ошибка, поставлю так вопрос ?
почему это копирование должно быть const ? |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
сТРОКИ ООП С++ | Camom1Le | Помощь студентам | 0 | 30.11.2010 21:55 |
C++ ООП | Smile.id | Помощь студентам | 2 | 21.02.2010 13:41 |
ООП | AlekDruzh | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 09.09.2009 20:32 |
Паскаль ООП. Примеры программ с использованием ООП | SeЯgey | Помощь студентам | 5 | 13.05.2009 21:55 |