我想知道,QVariant内部如何存储int、QMap、QList等数据类型,它的内部数据结构/实现是什么?在QVariant中存储和检索类型(如int、float)的开销是多少?请保留HTML标记。
QVariant
实际上是几种基本类型(如 int
和 float
等)、QObject
指针以及一个用于存储不属于 QObject
和基本类型的 void*
指针的 union
。此外,还有一个类型数据成员,它允许它知道当前存储的实际内容是什么。开销似乎不比存储结构体的成员多多少,只需要检查其与类型是否兼容,可能进行一些转换(例如将整数转换为浮点数)。
QVariant
的总大小为 _16 字节_:8 字节(最大原始类型)+ 4 字节(类型信息)+ 4 字节(填充)。 - hrrQVariant
,另外16个用于QVariant::Private
。至少,这就是sizeof
告诉我的。我没有手动计算过它们。 - derM