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