crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> как протестировать оператор присваивания и конструктор копирования класса?
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  


Цитата(Влад @ 20.4.2010, 23:12) *
// эта ошибка приводит к UB! Стандарт, 5.3.5/2
/* delete theBuffer; */
delete[] theBuffer;
вот про это я не понял, а что тут неопределённого?

Цитата(Влад @ 20.4.2010, 23:12) *
// здесь везде i должны быть строго < theSize!
О-о-о, надо срочником тест подправить, а то выход за пределы индексации я не проверял. Спасибо!

Цитата(Влад @ 20.4.2010, 23:19) *
Plain Old Data
это мне тоже ни о чём не говорит, "Плоские старые данные" :unknw:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Litkevich Yuriy   как протестировать оператор присваивания и конструктор копирования класса?   20.4.2010, 15:36
- - Andrewshkovskii   http://www.devexp.ru/2010/03/o-kopirovanii-obektov...   20.4.2010, 15:52
- - Влад   Цитата(Litkevich Yuriy @ 20.4.2010, 15:36...   20.4.2010, 17:16
- - Litkevich Yuriy   я пока примитивный тест сделал (мой класс - просте...   20.4.2010, 17:41
|- - DIMEDROLL   Цитата(Litkevich Yuriy @ 20.4.2010, 17:41...   20.4.2010, 18:30
- - Влад   Гмм.... А можно взглянуть на код этого YBuffer1?   20.4.2010, 18:06
- - Litkevich Yuriy   Цитата(Влад @ 20.4.2010, 22:06) Гмм.... А...   20.4.2010, 18:52
|- - DIMEDROLL   ЦитатаЦитата(DIMEDROLL @ 20.4.2010, 22:30...   20.4.2010, 18:59
- - Litkevich Yuriy   Цитата(DIMEDROLL @ 20.4.2010, 22:59) не п...   20.4.2010, 19:03
|- - DIMEDROLL   Цитата(Litkevich Yuriy @ 20.4.2010, 19:03...   20.4.2010, 19:07
- - Влад   Я немного подправил код.... Правда, не компилирова...   20.4.2010, 19:12
- - Litkevich Yuriy   Цитата(DIMEDROLL @ 20.4.2010, 23:07) что ...   20.4.2010, 19:16
|- - DIMEDROLL   ЦитатаКонструктор Копирования и Оператор Присваива...   20.4.2010, 19:34
- - Влад   POD - Plain Old Data.   20.4.2010, 19:19
- - Litkevich Yuriy   Цитата(Влад @ 20.4.2010, 23:12) // эта ош...   20.4.2010, 19:23
- - Влад   Юрий, просто Стандарт языка (п. 5.3.5 положение (c...   20.4.2010, 21:36
- - Litkevich Yuriy   Цитата(Влад @ 20.4.2010, 23:12) см. Сатте...   21.4.2010, 12:57
- - AD   Цитата(Litkevich Yuriy @ 21.4.2010, 13:57...   21.4.2010, 17:48


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 2:19