【问题标题】:Will preparing and executing the QSqlQuery change the logical constness of the method that does it?准备和执行 QSqlQuery 会改变执行它的方法的逻辑常量吗?
【发布时间】:2012-04-06 19:21:55
【问题描述】:

我有一个指向 QSqlQuery 的 QScopedPointer,它是一个类的成员变量。

我想在一个 const 方法中初始化、准备和执​​行 QSqlQuery。该方法的 constness 不会让我这样做。 有 2 个选项。从方法中删除 const 或将关键字 mutable 添加到成员变量。哪个更好,为什么?

我读到只有当方法/对象的“逻辑常量”不受修改变量的影响时,我才应该使用 mutable。什么是逻辑常数,在我的情况下会被修改吗?

【问题讨论】:

    标签: c++ constants


    【解决方案1】:

    这真的取决于你班上的其他人。通过在 QSqlQuery 上准备查询,您正在更改其中一个数据成员的状态。因此,该方法不是纯粹的“const”。

    您应该决定类的其余部分如何与 QSqlQuery 成员交互。如果查询的状态与您的对象的状态无关,也就是说,您的其他方法都不会关心 QSqlQuery 数据成员中准备好的查询是否已更改,那么使成员可变是一个不错的选择。如果更改准备好的查询在其他地方有影响,那么方法不应该是 const。

    【讨论】:

      猜你喜欢
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多