Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT | страница 81
>class CFigure : public CObject {
> // Переопределяем виртуальный метод базового класса
> int m_area = 0;
> // Остальные элементы класса…
>}
>// Переопределяем виртуальный метод AssertValid класса CObject
>void CFigure::AssertValid() const {
> // Сначала проверяем целостность элементов базового класса
> CObject::AssertValid();
> // Проверяем элемент m_area.
> // Он должен быть больше или равен нулю
> ASSERT(m_area >= 0);
>}
Виртуальный метод Dump позволяет получить дамп объекта данного класса:
>virtual void Dump(CDumpContext& dc) const;
Метод Dump имеет единственный параметр dc, определяющий контекст отображения для вывода дампа объекта. Часто в качестве параметра dc используется предопределенный объект afxDump. Он позволяет передавать информацию в окно отладчика Visual C++. Объект afxDump определен только для отладочной версии приложения.
Вы можете переопределить метод Dump для своего класса. Переопределенный метод должен сначала вызывать метод Dump базового класса, а затем выводить значения элементов самого класса. Для вывода значений элементов объекта класса в контекст dc можно использовать операторы <<, переопределенные для класса CDumpContext.
Если класс определен с макрокомандами IMPLEMENT_DYNAMIC или IMPLEMENT_SERIAL, то метод Dump класса CObject будет отображать также имя самого класса.
Для класса CFigure, описанного выше, метод Dump можно определить следующим образом:
>void CFigure::Dump(CDumpContext &dc) const {
> // Вызываем метод Dump базового класса
> CObject::Dump(dc);
> // Выводим в контекст dc значение элемента m_area
> // класса CFigure
> dc << "Площадь = " << m_area;
>}
Сохранение и восстановление состояния объекта
В классе CObject определены метод IsSerializable и виртуальный метод Serialize, которые используются для сохранения и восстановления состояния объектов в файлах на диске. Чтобы объекты класса можно было сохранять в файлах на диске с возможностью их последующего восстановления, объявление класса объекта должно содержать макрокоманду DECLARE_SERIAL, а реализация класса макрокоманду IMPLEMENT_SERIAL. Более подробно об сохранении и восстановлении объектов можно прочитать в разделе “Запись и восстановление объектов”.
Метод IsSerializable позволяет определить, можно ли записать состояние объекта в файле, а потом восстановить его. Если это возможно, метод IsSerializable возвращает ненулевое значение.
>BOOL IsSerializable() const;