在 C++ 中,什么时候应该使方法常量?

In C++, When Should I Make A Method Constant?

我的问题标题几乎问了所有问题。我最近发现在 C++ 中通过 const 引用传递许多值并将 classes 中的某些方法标记为常量方法是一种很好的编程习惯。现在,我有一个我自己写了一段时间的库,现在完全没有 const-correctness,所以我想开始一点一点地纠正它。

在什么特定场景下应该让方法常量?到目前为止,我知道 "getter" 方法通常应该保持不变(因为一个代码中的代码不应该修改任何 class 变量),但是我是否为 all 被视为 getter 的方法,还是仅特定的方法?在 getter 方法之外,还有哪些场景应该使方法保持不变?

but do I do that for all methods that are considered getters, or only specific ones?

您应该对所有不修改非可变成员的方法执行此操作。它们不仅包括 getter 函数,还包括任何重载的运算符函数,例如 operator==operator!=operator<.

什么时候应该使方法常量?

根据经验,只要对象的 none 成员变量发生变化,您就应该使方法常量。

作为附加准则,您应该仅在确定将来不会更改方法以更改成员变量时才执行此操作。

最终,如果您计划使方法影响成员变量,它应该是非常量。否则,它应该是常数。