Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个指向 QSqlQuery 的 QScopedPointer,它是一个类的成员变量。
我想在一个 const 方法中初始化、准备和执行 QSqlQuery。该方法的 constness 不会让我这样做。有 2 个选项。从方法中删除 const 或将关键字 mutable 添加到成员变量。哪个更好?为什么?
我读到只有当方法/对象的“逻辑常量”不受修改变量的影响时,我才应该使用 mutable。什么是逻辑常数,在我的情况下会被修改吗?
这真的取决于你班上的其他人。通过在 QSqlQuery 上准备查询,您正在更改其中一个数据成员的状态。因此,该方法不是纯粹的“const”。
你的决定应该是你的类的其余部分如何与 QSqlQuery 成员交互。如果查询的状态与您的对象的状态无关,也就是说,您的其他方法都不会关心 QSqlQuery 数据成员中准备好的查询是否已更改,那么使成员可变是一个不错的选择。如果更改准备好的查询在其他地方有影响,则该方法不应该是 const。