Как QVariant работает внутри?

Я хочу знать, как QVariant может внутренне хранить, Int, QMap, QList,...

Я имею в виду, что такое внутренняя структура данных / реализация? Каковы затраты на хранение и извлечение типов (int, float) в QVariant?

1 ответ

Решение

Беглый взгляд на код показывает, что QVariant в основном union нескольких примитивных типов (int, float и т. д.), QObject указатель и void* указатель на все остальное, что не является QObject и не примитив. Существует также элемент данных типа, который позволяет ему знать, что на самом деле там хранится. Издержки, по-видимому, не намного больше, чем хранение члена структуры, проверка его на совместимость типов и, возможно, выполнение преобразования (например, int в float)

Другие вопросы по тегам