Информация о классе
Информация о классе
Класс CObject содержит два метода: GetRuntimeClass и IsKindOf, позволяющих получить информацию о классе объекта.
Виртуальный метод GetRuntimeClass
Виртуальный метод GetRuntimeClass возвращает указатель на структуру CRuntimeClass, описывающую класс объекта, для которого метод был вызван:
virtual CRuntimeClass* GetRuntimeClass() const;
Для каждого класса, наследованного от CObject поддерживается своя структура CRuntimeClass. Если вы желаете использовать метод GetRuntimeClass в своем классе, наследованном от CObject, вы должны поместить в реализации класса макрокоманду IMPLEMENT_DYNAMIC или IMPLEMENT_SERIAL.
Структура CRuntimeClass содержит различную информацию о классе. Ниже перечислены несколько основные полей этой структуры.
Поле структуры CRuntimeClass Описание const char* m_pszClassName Указатель на строку, закрытую двоичным нулем, в которой расположено имя класса int m_nObjectSize Размер объектов класса WORD m_wSchema Номер схемы (schema number) класса. Используется при автоматическом сохранении и восстановлении объектов класса в файле. Если объекты класса не могут быть сохранены и восстановлены (в объявлении класса отсутствует макрокоманда IMPLEMENT_SERIAL), m_wSchema содержит значение –1 void (*m_pfnConstruct) (void* p) Указатель на конструктор класса, используемый по умолчанию. Этот конструктор не имеет параметров CRuntimeClass* m_pBaseClass Указатель на структуру CRuntimeClass, содержащую аналогичную информацию о базовом классеКроме перечисленных элементов структуры, она содержит метод CreateObject. Этот метод позволяет динамически создать объект соответствующего класса уже во время работы приложения. Если объект класса не создан, метод возвращает значение NULL.
CObject* CreateObject();
Метод IsKindOf
Метод IsKindOf определяет отношение объекта и класса, представленного указателем pClass на структуру CRuntimeClass. Метод правильно работает только для классов, в объявлении которых указаны макрокоманды DECLARE_DYNAMIC или DECLARE_SERIAL.
BOOL IsKindOf(const CRuntimeClass* pClass) const;
Метод возвращает ненулевое значение, если объект, для которого он вызван, принадлежит классу заданному параметром pClass или классу наследованному от него. В противном случае метод возвращает нулевое значение.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Информация
Информация Здание нашего несколько искусственно созданного благополучия слишком легко может рухнуть, как только в один прекрасный день окажется, что при помощи всего лишь нескольких слов, таких как "информация", "энтропия", "избыточность", нельзя решить всех наших
Информация о диске
Информация о диске Щелкнув мышью на кнопке Инф. о диске, вы откроете одноименное окно. Вставьте в привод любой компакт-диск (аудио, видео, чистый компакт-диск для однократной записи, записанный CD-RW и т. д.). Щелкнув мышью на кнопке Обновить и выбрав этот привод из
54. Избегайте срезки. Подумайте об использовании в базовом классе клонирования вместо копирования
54. Избегайте срезки. Подумайте об использовании в базовом классе клонирования вместо копирования РезюмеСрезка объектов происходит автоматически, невидимо и может приводить к полному разрушению чудесного полиморфного дизайна. Подумайте о полном запрете копирующего
Правило 7: Объявляйте деструкторы виртуальными в полиморфном базовом классе
Правило 7: Объявляйте деструкторы виртуальными в полиморфном базовом классе Существует много способов отслеживать время, поэтому имеет смысл создать базовый класс TimeKeeper и производные от него классы, которые реализуют разные подходы к хронометражу:class TimeKeeper
Дополнительная информация
Дополнительная информация В процессе составления оригинала данной книги какое-либо частное программное обеспечение не использовалось. Черновики были набраны из главных файлов XML-DocBook, созданных с помощью редактора GNU Emacs. Формирование PostScript-представления
Несколько слов о классе System.Environment
Несколько слов о классе System.Environment Давайте рассмотрим класс System.Environment подробнее. Этот класс содержит ряд статических членов, позволяющих получить информацию относительно операционной системы, в которой выполняется .NET-приложение. Чтобы иллюстрировать возможности этого
Ввод и вывод в классе Console
Ввод и вывод в классе Console Вдобавок к членам, указанным в табл. 3.2, тип Console определяет множество методов, обрабатывающих ввод и вывод, причем все эти методы определены как статические (static), поэтому они вызываются на уровне класса. Вы уже видели, что WriteLine() вставляет
Информация о пользователе
Информация о пользователе Также с помощью реестра можно узнать информацию о пользователе устройства. За эту информацию отвечает параметр Owner в разделе HKEY_CURRENT_USERControlPanelOwner. В листинге 13.21 приведен код, который получает эту информацию.Листинг 13.21private void butOwner_Click(object sender, EventArgs
Информация о классе объекта (структура CRuntimeClass)
Информация о классе объекта (структура CRuntimeClass) Во многих случаях бывает необходимо уже во время работы приложения получить информацию о классе объекта и его базовом классе. Для этого любой класс, наследованный от базового класса CObject связан с структурой CRuntimeClass. Она
Наука: Информация или дух?
Наука: Информация или дух? Автор: Анатолий ШалытоОдин очень сильный студент на вопрос, почему он не ходил на мои лекции, ответил, что на одной лекции был, но полученной информации ему было недостаточно.Я понял, о чем идет речь, но с ним не согласился, так как на лекциях ставлю
Редакторская информация
Редакторская информация Дело о реформе копирайта.Член Европейского парламента Кристиан Энгстром и Рик Фальквинг.Книга опубликована членом Европейского парламента от Пиратской партии Кристианом Энгстромом при поддержке от группы экологии и энергосбережения в
Информация и ее измерение
Информация и ее измерение Основная характеристика устройств памяти – это их объем. Единица измерения объема запоминающих устройств – байт (1 байт = 8 битам). Бит – это наименьший объем информации, которую может обработать компьютер. Для передачи 1 бита используется один
Nokia 3500 Classic: Два мегапиксела в среднем классе
Nokia 3500 Classic: Два мегапиксела в среднем классе Автор: Алексей Стародымов+приятный внешний вид,2-мегапиксельная камера,microSD на 128 Мбайт в комплекте -зернистый экран невысокого разрешения, отсутствует ИК-порт, в комплект не входит miniUSB- кабельNokia 3500 Classic, пожалуй, первый