![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
serendip |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 20.12.2005 Репутация: нет Всего: нет |
Здравствуйте!
![]() Кто-нибудь видит что-нибудь нехорошее в этих перегрузках?
Работает(вторая) совсем непонятно, вадаёт один и тот же неожидаемый рез-т (1,35244; 1,35244; 0; 0; ...0) И при повторном запуске ошибку(куда-то чего-то не по тому адресу) |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
что такое DMass?
полный код в студию... во второй функции не предусмотрено, мне кажется, разных размеров - откуда ты уверен, что они совпадают - опять же таки полный код DMass. что такое переменная d и чему она равна (или может быть равна?) |
|||
|
||||
threef |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 27.10.2005 Где: Запорожье Репутация: 9 Всего: 10 |
Я думаю здесь: for (int i=0; i<n; i++) i<n ? либо i<v.n либо this->resize(v.getsize()); |
||||
|
|||||
serendip |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 20.12.2005 Репутация: нет Всего: нет |
Итаак...
Перегрузка та же. Есть ещё одна перегрузка, но она выдает точно такой же результат ![]()
Размер массивов всегда совпадает(так задумывалось) Переменная d - просто обычное число, которое нужно вычесть из каждого эл-та массива. Причём, без перегрузок"^"и"~" пр-мма работает нормально - всё вводит, выводит и даже присваивает объекты (т.е. срабатывает перегр. "=", я надеюсь)
- не помогает. Такая загадка... ![]() ![]() Это сообщение отредактировал(а) serendip - 27.1.2006, 22:29 |
||||||
|
|||||||
BreakPointMAN |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 15.9.2004 Где: Saratov Репутация: 14 Всего: 24 |
Итак, для начала...
![]()
а в конструкторе ты выделяешь динамически память:
Это означает, что должны быть соответствующим образом определены деструктор данного класса, а также конструктор копирования и операция присваивания. В деструкторе ты должен высвобождать выделенную конструктором память (используя delete), а копировать и присваивать объекты данного класса нужно создавая в каждом из них "свои" динамические данные.. Оператор присваивания у тебя уже определен неверно:
-------------------- "Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце") |
||||||
|
|||||||
serendip |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 20.12.2005 Репутация: нет Всего: нет |
...ну что вам сказать...
![]() ничего не понятно, кроме деструктора ![]() Могу только ответить:"А в учебнике так!":) Т.е вы хотите сказать, что в "=" нужно создавать ещё один объект? |
|||
|
||||
BreakPointMAN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 15.9.2004 Где: Saratov Репутация: 14 Всего: 24 |
Либо в учебнике не так (например, нет выделения памяти с помощью new), либо учебник на свалку... ![]()
Т.е. хочу сказать, что сначала нужно немного почитать про копирование и присваивание, конструкторы и деструкторы... ![]() -------------------- "Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце") |
|||
|
||||
serendip |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 20.12.2005 Репутация: нет Всего: нет |
![]() ![]() Архангельский ![]() |
|||
|
||||
BreakPointMAN |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 15.9.2004 Где: Saratov Репутация: 14 Всего: 24 |
Архангельский для изучения среды C++ Builder хорош, но никак не для изучения языка C++... ![]() ![]() -------------------- "Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце") |
|||
|
||||
serendip |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 20.12.2005 Репутация: нет Всего: нет |
![]() а вот
и
- не совсем понимаю..Думается мне, что в данном случае в этом нет необходимости. Но мне очень необходмо понять, почему не работают перегрузки! ![]() При объявлении объекта я каждый раз создаю в нём свои динамические данные, разве не так? |
||||
|
|||||
Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 3 Всего: 10 |
Скрытая логическая ошибка (в класофикации граблей № 2):
В функции создается статический объект, при выходе из функции объект автоматически уничтожается. И ссылка на него некоретна. -------------------- Пролетал мимо. |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 3 Всего: 10 |
Это что return rr Да это не ссылка на объект. Но вывод за пределы функции результатов убитого уже экземпляра объекта.
-------------------- Пролетал мимо. |
|||
|
||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Fin
Тогда по твоей логике
тоже не коректно? ![]() |
|||
|
||||
Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 3 Всего: 10 |
Коректно. Компилятор скорее всего сделает такую последовательность команд аcсемблера.
Это сообщение отредактировал(а) Fin - 28.1.2006, 11:13 -------------------- Пролетал мимо. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |