как протестировать оператор присваивания и конструктор копирования класса? |
Здравствуйте, гость ( Вход | Регистрация )
как протестировать оператор присваивания и конструктор копирования класса? |
Litkevich Yuriy |
20.4.2010, 15:36
Сообщение
#1
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Собственно вопрос: как протестировать класс на корректность работы самописаных конструктора копирования и оператора присваивания, и на предмет их существования вообще.
Положим, что в конструкторе класса создаётся динамический объект, а в деструкторе удаляется. Если свои конструктора копирования и оператора присваивания не определять, то компилятор будет использовать побитовое копирование. При этом могут возникать коварные ситуации. Как я понимаю, связанные с двойным освобождением ресурсов. Можно ли написать код, который бы осуществлял подобный тест? |
|
|
Litkevich Yuriy |
20.4.2010, 19:23
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
// эта ошибка приводит к UB! Стандарт, 5.3.5/2 вот про это я не понял, а что тут неопределённого?/* delete theBuffer; */ delete[] theBuffer; // здесь везде i должны быть строго < theSize! О-о-о, надо срочником тест подправить, а то выход за пределы индексации я не проверял. Спасибо!Plain Old Data это мне тоже ни о чём не говорит, "Плоские старые данные"
|
|
|
Текстовая версия | Сейчас: 29.11.2024, 2:19 |