Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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