QList children - 从QObject派生的结构或自定义类?

时间:2011-04-30 19:12:38

标签: c++ qt symbian qlist

我目前正在开发Symbian平台上的Qt应用程序。 Application有一个sqlite数据库,初始数据是从txt文件中填充的。

我正在使用json格式的数据实现在线更新。所以我想在我的db update类中创建泛型函数,它从类{/ 1}中获取类{/ 1}}和更新的db。 QList将填充来自txt或json的对象。

我已经有了解析,只考虑在性能方面会更好:

  1. 创建c ++结构并传递它们(因为对象只包含简单数据)包含在QList
  2. 创建派生自QList的自定义类,并将其作为QObject中的指针传递,然后使用QList删除所有内容
  3. 任何其他方式......

1 个答案:

答案 0 :(得分:2)

这取决于你的班级是携带行为还是只是状态。

  1. 他们带有行为。

    然后,多态类是有序的,是的。是否需要继承QObject是另一个问题。如果您需要其服务(内省,信号/插槽,事件处理),则仅从QObject 继承。否则,不要。

    关于qDeleteAll():我不会去那里。而不是裸指针,使用智能指针,例如QSharedPointer。它们跟踪对其有效负载的引用数量,并在refcount降至零时删除它。

    在这种情况下,请不要使用QList,而应使用更有效的容器,例如QVector

  2. 他们只携带状态。

    然后,“哑”struct就足够了。在这种情况下,请不要将QList用作容器,而应使用更高效的内容,例如QVector(不要忘记充分利用reserve()方法)。

  3. 一般情况下,请尝试避免QList<T>类型为T的{​​{1}}和非构建/非Qt类型,因为QList performance is degraded for these