Qt - мета-объектный код - PullRequest
2 голосов
/ 06 июня 2011

Что мы подразумеваем под meta object code применительно к Meta Object Compiler (moc) в Qt?

Спасибо.

Ответы [ 4 ]

4 голосов
/ 06 июня 2011

Мета-объекты улучшают языки программирования, создавая новые или манипулируя существующими объектами. Они обеспечивают функциональные возможности, которые язык фактически не имеет сам по себе. Мета-объекты интерпретируются либо по времени компиляции, либо по времени выполнения. В Qt и C ++ это делается во время компиляции мета-объектным компилятором (moc).

Примером является использование концепции сигнал / слот.

0 голосов
/ 10 апреля 2018

Код мета-объекта требуется для механизма слотов сигналов, информации о типах времени выполнения и системы динамических свойств.

0 голосов
/ 06 июня 2011

Поскольку вы специально спрашивали о Meta object и moc,

Из документов ,

... Инструмент moc читает заголовок C ++файл.Если он находит одно или несколько объявлений классов, которые содержат макрос Q_OBJECT, он создает исходный файл C ++, содержащий код мета-объекта для этих классов....

HTH ..

0 голосов
/ 06 июня 2011

Система Qt создает «мета-объектный код» на основе «аннотаций» в вашем коде c ++ (например, Q_PROPERTY, Q_SLOTS и т.д.) Qt использует их для реализации мета-вызовов и доступа стиля отражения к свойствам класса.

Посмотрите на файлы ".moc", которые компилятор создает для вашего класса, и вы поймете.

Но, учитывая неопределенность относительно будущего Qt, могу я спросить, почему вы выбираете Qt? (если это не ради удовольствия взлома ..)

...