我有一个QScopeQuery的QScopedPointer,它是一个类的成员变量。
我想以const方法初始化,准备和执行QSqlQuery。该方法的恒定性不允许我这样做。
有2个选项。从方法中删除const或将可变的关键字添加到成员变量。哪个更好?为什么?
我读到,仅当方法/对象的“逻辑一致性”不受修改变量的影响时,才应使用可变的。什么是逻辑常数,在我的情况下会被修改吗?
最佳答案
这确实取决于您类的其余部分。通过在QSqlQuery上准备查询,您可以更改数据成员之一的状态。因此,该方法并非纯粹是“const”。
应该由您决定的是类的其余部分如何与QSqlQuery成员进行交互。如果查询的状态与对象的状态无关,也就是说,除了使成员可变之外,其他任何方法都不会关心QSqlQuery数据成员中准备好的查询是否已更改。如果更改准备好的查询对其他地方有影响,则该方法不应为const。
关于c++ - 准备和执行QSqlQuery会改变这样做的方法的逻辑常数吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10048223/