Как QVariant работает внутри? - PullRequest
11 голосов
/ 13 февраля 2011

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

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

1 Ответ

19 голосов
/ 13 февраля 2011

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

...