как протестировать оператор присваивания и конструктор копирования класса? |
Здравствуйте, гость ( Вход | Регистрация )
как протестировать оператор присваивания и конструктор копирования класса? |
Влад |
20.4.2010, 19:12
Сообщение
#11
|
Участник Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: 8 |
Я немного подправил код.... Правда, не компилировал! Только то, что бросается в глаза при чтении.
Раскрывающийся текст
|
|
|
Litkevich Yuriy |
20.4.2010, 19:16
Сообщение
#12
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
что такое КК и ОП? Конструктор Копирования и Оператор Присваиванияпоскольку abuffer - POD что означает эта абревиатура?Что-то это что? Что-то - некоректный КК и/или ОПчёткий эффект это какой? чёткий, например сообщение: "Конструктор копирования работает не корректно" |
|
|
Влад |
20.4.2010, 19:19
Сообщение
#13
|
Участник Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: 8 |
POD - Plain Old Data.
|
|
|
Litkevich Yuriy |
20.4.2010, 19:23
Сообщение
#14
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
// эта ошибка приводит к UB! Стандарт, 5.3.5/2 вот про это я не понял, а что тут неопределённого?/* delete theBuffer; */ delete[] theBuffer; // здесь везде i должны быть строго < theSize! О-о-о, надо срочником тест подправить, а то выход за пределы индексации я не проверял. Спасибо!Plain Old Data это мне тоже ни о чём не говорит, "Плоские старые данные"
|
|
|
DIMEDROLL |
20.4.2010, 19:34
Сообщение
#15
|
Участник Группа: Участник Сообщений: 165 Регистрация: 28.9.2008 Из: Киев Пользователь №: 304 Спасибо сказали: 23 раз(а) Репутация: 0 |
Цитата Конструктор Копирования и Оператор Присваивания Что-то - некоректный КК и/или ОП чёткий, например сообщение: "Конструктор копирования работает не корректно" В таком случае мой код(функция и оператор==) соотвествует данном описанию, если что не так - будет ассерт с сообщением. POD это int, double, short .... тоесть встроенные типы Си P.S гуглится за меньше минуту Добавлено: был неправ, POD - структура данных не имеющая никаких методов, только члены-переменные википедия англ. Сообщение отредактировал DIMEDROLL - 20.4.2010, 19:48 |
|
|
Влад |
20.4.2010, 21:36
Сообщение
#16
|
Участник Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: 8 |
Юрий, просто Стандарт языка (п. 5.3.5 положение (clause) 2) четко описывает требования к выделению и удалению памяти:
- если память была выделена по new для единичного объекта (неважно, какого типа) - то удаляться она должна только delete для единичного объекта; - если память была выделена по new[] для массива объектов (array form) - то удаляться она должна только delete[] для массива объектов (тоже array form) и никак иначе. Иначе поведение программы не определено (Otherwise behavior is undefined, если мой склероз мне не изменяет). Причем, Стандарт никак не конкретизирует это "неопределенное поведение" - программе разрешается делать все, что ей заблагорассудится, начиная от порчи памяти и невоспроизводимых глюков, и вплоть до format C:. |
|
|
Litkevich Yuriy |
21.4.2010, 12:57
Сообщение
#17
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
AD |
21.4.2010, 17:48
Сообщение
#18
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
тут обнаружил дома книжку: "Герб Саттер и Андрей Александреску. Стандарты программирования на С++. 101 правило и рекомендация." Круто. Как раз эту книжку давно хотел купить, но она неожиданно исчезла с прилавков магазинов! Почитай. Вещь, уверен, что полезная. Отдельные книги Саттера и Александреску я читал! |
|
|
Текстовая версия | Сейчас: 28.11.2024, 22:27 |