在C ++中,我何时应该使方法不变?

时间:2015-12-23 05:34:13

标签: c++ constants const-correctness

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

在什么特定情况下,我应该使方法不变?到目前为止,我知道“getter”方法通常应该是常量的(因为一个中的代码不应该修改任何类变量),但我是否为所有方法做了那些被认为是getter的方法,或者只是特定的?除了getter方法之外,还应该使其他方法的方法保持不变?

2 个答案:

答案 0 :(得分:6)

  

但是,对于所有被认为是吸气剂的方法,还是仅针对特定方法,我会这样做?

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

答案 1 :(得分:1)

我应该何时使方法保持不变?

作为经验法则,只要对象的成员变量都没有被更改,就应该使方法保持不变。

作为附加指南,只有在确定将来不会更改方法以更改成员变量时,才应执行此操作。

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