QVariant如何在内部工作?

Sun*_*hah 11 qt qvariant

我想知道,QVariant如何在内部存储,int,QMap,QList,......

我的意思是什么是内部数据结构/实现?在QVariant中存储和检索类型(int,float)的开销是多少?

sho*_*osh 19

快速浏览一下代码显示,一个QVariant基本上是union几种基本类型(int,float等'),一个QObject指针,以及void*为别的指针不是一个QObject,而不是原始的.还有一个类型数据成员,可以让它知道当前存储的内容.开销似乎只是存储到结构的一个成员,检查它是否类型兼容并可能进行转换(例如int为float)

  • 作为额外的开销,它还需要存储底层类型.这使得`QVariant`总共_16字节_:8字节(最大基元类型)+ 4字节(类型信息)+ 4字节(填充). (2认同)
  • 至少到目前为止,它有一个疙瘩。我认为现在的大小是 32 字节,`QVariant` 为 16,`QVariant::Private` 为 16。至少,这是 `sizeof` 告诉我的。我没有用手数过它们。 (2认同)