printКлассы

printМетакласс

Любой объект является экземпляром какого-либо класса. Что будет, если мы попробуем и с самими классами обращаться как с объектами? Для этого нам надо ответить на вопрос, что же такое класс класса? Ответ – это метакласс. Иными словами, метакласс – это класс, экземпляры которого суть классы. Метаклассы венчают объектную модель в чисто объектно-ориентированных языках. Главное назначение – возможность экспериментировать с другими объектно-ориентированными парадигмами и создавать такие инструменты для разработчика, как броузеры классов и объектов.

14665.png

Метаклассы есть в Smalltalk и Delphi, но не в C++. Первичное назначение метакласса – поддержка переменных класса (которые являются общими для всех экземпляров этого класса), операций инициализации переменных класса и создания единичного экземпляра метакласса. Хотя в C++ метаклассов нет, семантика его конструкторов и деструкторов служит целям, аналогичным тем, что вызвали к жизни метаклассы. C++ имеет средства поддержки и переменных класса, и операций метакласса (элементы данных или методы класса описанные как статические).
loading