Чтобы узнать, когда рекомендуется использовать модификатор const для членов класса, вы должны обратиться к « HIGH · INTEGRITY C ++ STANDARD MANUAL », чтобы узнать, когда рекомендуется:
Правило CPP High Integrity 3.1.8 : Объявить 'const' любую функцию-член класса, которая не изменяет внешне видимое состояние объекта. (QACPP 4211, 4214)
Обоснование : Хотя язык обеспечивает побитовую правильность констант, правильность констант следует рассматривать как логическую, а не побитовую. Функция-член должна быть объявлена как const, если клиенту невозможно определить, изменился ли объект в результате вызова этой функции. Ключевое слово 'mutable' может использоваться для объявления данных-членов, которые могут быть изменены в константных функциях, его следует использовать только в том случае, если данные-члены не влияют на внешне видимое состояние объекта.
class C
{
public:
const C& foo() { return * this; } // should be declared const
const int& getData() { return m_i; } // should be declared const
int bar() const { return m_mi; } // ok to declare const
private:
int m_i;
mutable int m_mi;
};
Ссылка Эффективная C ++ Item 21; Промышленная прочность C ++ 7.13;