Как QVariant работает внутри?
Я хочу знать, как QVariant может внутренне хранить, Int, QMap, QList,...
Я имею в виду, что такое внутренняя структура данных / реализация? Каковы затраты на хранение и извлечение типов (int, float) в QVariant?
1 ответ
Решение
Беглый взгляд на код показывает, что QVariant
в основном union
нескольких примитивных типов (int
, float
и т. д.), QObject
указатель и void*
указатель на все остальное, что не является QObject
и не примитив. Существует также элемент данных типа, который позволяет ему знать, что на самом деле там хранится. Издержки, по-видимому, не намного больше, чем хранение члена структуры, проверка его на совместимость типов и, возможно, выполнение преобразования (например, int в float)