![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Litkevich Yuriy |
![]()
Сообщение
#1
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Собственно вопрос: как протестировать класс на корректность работы самописаных конструктора копирования и оператора присваивания, и на предмет их существования вообще.
Положим, что в конструкторе класса создаётся динамический объект, а в деструкторе удаляется. Если свои конструктора копирования и оператора присваивания не определять, то компилятор будет использовать побитовое копирование. При этом могут возникать коварные ситуации. Как я понимаю, связанные с двойным освобождением ресурсов. Можно ли написать код, который бы осуществлял подобный тест? |
|
|
![]() |
Влад |
![]()
Сообщение
#2
|
Участник ![]() ![]() Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: ![]() ![]() ![]() |
Если свои конструктора копирования и оператора присваивания не определять, то компилятор будет использовать побитовое копирование. Не совсем так. Компилятор будет использовать почленное копирование. Для POD-типов он вполне может оптимизировать его до побитового, типа inline memcpy - например, MSVC++ именно так и делает. Добавлено: для тестирования корректности работы отдельных функций, к каковым как раз и относятся упомянутые, применяй юнит-тестирование. Вот одна из (легких) библиотек для юнит-тестирования: UnitTest++, http://unittest-cpp.sourceforge.net/ Или посмотри на Boost.Test: http://www.boost.org/doc/libs/1_34_0/libs/.../doc/index.html Сообщение отредактировал Влад - 20.4.2010, 17:23 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 29.5.2025, 6:53 |